- 이 표시는 작성하다 실수한 문장 피드백
import java.util.Scanner;
class Day2_Q1{
public static void main(String[]args){
Scanner sc = new Scanner(System.in);
int num1 = 0, num2 = 0;
System.out.print("첫번째 숫자를 입력하세요 : ");
num1 = sc.nextInt();
System.out.print("두번째 숫자를 입력하세요 : ");
num2 = sc.nextInt();
if(num1 > num2)
{
System.out.println(num2 + " 보다 " + num1 + " 이 더 큽니다.");
}
else if(num1 < num2)
{
System.out.println(num1 + " 보다 " + num2 + "이 더 큽니다.");
}
else
{
System.out.println(num1 + " 과 " + num2 + "는 같습니다.");
}
}
}

Scanner를 들여오는 명령은 안함..
사용자의 입력을 저장할 변수 앞에 Scanner 사용해서 에러
자꾸 오타를 낸다.
import java.util.Scanner;
class Day2_Q2{
public static void main(String[]args){
int a = 0, b = 0, c = 0, d = 0, e = 0;
int temp = 0;
Scanner sc = new Scanner(System.in);
//임의의 숫자 받기
System.out.print("1번 숫자를 입력하세요.");
a = sc.nextInt();
System.out.print("2번 숫자를 입력하세요.");
b = sc.nextInt();
System.out.print("3번 숫자를 입력하세요.");
c = sc.nextInt();
System.out.print("4번 숫자를 입력하세요.");
d = sc.nextInt();
System.out.print("5번 숫자를 입력하세요.");
e = sc.nextInt();
//첫번째 자리에 최소값 구하기
if(a > b)
{
temp = a;
a = b;
b = temp;
}
if(a > c)
{
temp = a;
a = c;
c = temp;
}
if(a > d)
{
temp = a;
a = d;
d = temp;
}
if(a > e)
{
temp = a;
a = e;
e = temp;
}
//두번째 최소값 구하기
if(b > c)
{
temp = b;
b = c;
c = temp;
}
if(b > d)
{
temp = b;
b = d;
d = temp;
}
if(b > e)
{
temp = b;
b = e;
e = temp;
}
//세번째 최소값 구하기
if(c > d)
{
temp = c;
c = d;
d = temp;
}
if(c > e)
{
temp = c;
c = e;
e = temp;
}
//4번째 최소값 구하기
if(d > e)
{
temp = d;
d = e;
e = temp;
}
System.out.println(a + " " + b + " " + c + " " + d + " " + e);
}
}
예: 게임을 시작합니다. 숫자를 입력하세요. 50 당신이 입력한 숫자 보다 큽니다. 80 당신이 입력한 숫자 보다 작습니다. 67 정답입니다. 당신은 3번만에 정답을 입력하셨습니다. 프로그램을 종료합니다
import java.util.Scanner;
import java.util.Random;
class Day2_Q3{
public static void main(String[]args){
int correct = 0, ans = 0, cnt = 0;
Scanner sc = new Scanner(System.in);
Random ran = new Random();
correct = ran.nextInt(101);
System.out.println("게임을 시작합니다.");
System.out.print("숫자를 입력하세요.");
while(ans != correct){
ans = sc.nextInt();
cnt++;
if (ans > correct){
System.out.println("당신이 입력한 값보다 작습니다.");
}else if(ans < correct){
System.out.println("당신이 입력한 값보다 큽니다.");
}else{
System.out.println("정답입니다. 당신은 " + cnt + "번만에 정답을 맞추셨습니다.");
}
}
}
}

class Day3_Q1{
public static void main(String[]args){
int i = 0, sum = 0;
do{
i++;
sum += i;
System.out.println(sum);
}while(i <= 100);
}
}

class Day3_Q2{
public static void main(String[]args){
int i = 0, sum = 0, cnt = 0;
do {
cnt++;
i += 7;
sum += i;
} while (sum <= 1000);
System.out.println("최초로 1000이 넘는 수는 " + sum + " 이고, 그 수는 " + cnt + "번째 이다.");
}
}

class Day3_Q3{
public static void main(String[]args){
int num = 0;
for(num = 1; num <= 20; num++) {
if (num % 2 == 0 || num % 3 == 0) {
continue;
}
System.out.println(num);
}
}
}

class Day3_Q4{
public static void main(String[]args) {
for(int num = 1; num < 50; num++) {
if(num % 5 == 0 && num % 7 == 0) {
System.out.println("5 와 7의 최소공배수는 " + num);
break;
}
}
}
}
int num을 0으로 초기화 시켜놔서 계속 출력이 0이 됐다.
break; 뒤에 print 하면 당연히 출력이 안되므로 조심
소수(Prime Number): 1과 자기 자신만으로 나누어 떨어지는 1보다 큰 양의 정수
class Day3_Q5boolean{ //boolean이용한 문
public static void main(String[]args) {
int anum = 0, snum = 0; //anum은 임의의수, snum은 소수 비교하는 값
boolean flag = true;
Scanner sc = new Scanner(System.in);
System.out.print("값을 입력하세요 : ");
anum = sc.nextInt();
if(anum <= 1) {
System.out.println("소수가 아닙니다.");
}for(snum = 2; snum < anum; snum++) { // 여기 snum이 1이라면
if(anum % snum == 0) {
flag = false;
break;
}
if(flag) {
System.out.println("소수 입니다.");
}else {
System.out.println("소수가 아닙니다.");
}
}
}
처음에는 for문과 if문을 이용해서 도전하다가 안되서 boolean을 이용해서 도전했다.
snum을 1로 초기화 해놓아서 계속 소수가 아니다만 출력됐다.
break하고 뒤에 if(anum == snum) flag = true; 를 작성했는데 어차피 true의 값을 가지고 가다가 flag가 flase가 되면 소수가 아니다를 출력하가 때문에 필요x한 문장이라 판단해 삭제했다.
for/if문과 다르게 sum < anum인 이유가 자기 자신까지 값이 더해지면 나머지가 결국 0이 무조건 되기때문에 그것을 방지하기 위해서이다.
class Day3_Q5for_if{
public static void main(String[]args) {
int anum = 0, snum = 0; //anum은 임의의수, snum은 소수 비교하는 값
Scanner sc = new Scanner(System.in);
System.out.print("값을 입력하세요 : ");
anum = sc.nextInt();
if(anum <= 1) {
System.out.println("소수가 아닙니다.");
}for(snum = 2; snum <= anum; snum++) { //snum이 1이면
if(anum % snum == 0)
break;
}if(anum == snum){
System.out.println("소수 입니다.");
}else {
System.out.println("소수가 아닙니다.");
}
}
}
boolean과 다르게 얘는 snum <= anum으로 해줘야 anum == snum이 되었을때 소수인지 아닌지를 출력하기 때문에 꼭 작거나 같다 라고 넣어야한다.
**** snum이 1이면 무조건 소수가 아니라고 나오는 이유
anum == snum과 같지 않으니까 무조건 소수가 아니다가 출력된다.
class Day4_Q1{
public static void main(String[]args){
int dan = 0, num = 0;
for(num = 1; num < 10; num++){
for(dan = 2; dan < 10; dan++){
System.out.print(dan + " * " + num + " = " + dan * num + "\t");
}
System.out.println();
}
}
}

AB
+BA = 99
class Day4_Q2_1번{
public static void main(String[]args){
int i = 0, j = 0;
for(i = 0; j < 10; i++) {
for(j = 9; j >= 0; j--) {
if((j * 10 + i) + (i * 10 + j) == 99){
System.out.println(j + " " + i + " + " + i + " " + j + " = 99" );
}
}
}
}
}

class Day4_Q2_2번 방법{
int i = 0, j = 0;
for(i = 0; i < 10; i++) {
for(j = 0; j < 10; j++) {
if((j * 10 + i) + (i * 10 + j) == 99){
System.out.println(j + " " + i + " + " + i + " " + j + " = 99" );
}
}
}
}
}
class Day4_Q4{
public static void main(String[]args){
int h = 0, y = 0, num = 0;
for(h = 0; h < 5; h++) { //행
for(y = 0; y < 5; y++) { //열
if(num <= 25) {
num++;
System.out.print(num + " ");
}
}
System.out.println();
}
}
}
행 과 열만 생각하고 25이하만 출력하는것을 까먹었다.. num이 for문이 진행되는동안 계속 늘어나서 25까지만 출력되는게 아니라 30이상을 출력시켜버렸다.
if문을 이용해 25까지만 출력시키게 해주었고 줄 나뉨 위치를 행 for문에 위치 시켜서 줄나뉨이 이상하게 되었다.

class Day4_Q5{
public static void main(String[]args){
int i = 0, j = 0;
for(i = 0; i < 4; i++){ //행
for(j = 0; j < i; j++){
System.out.print(" ");
}for(; j < 7 - i; j++){
System.out.print("*");
}
System.out.println();
}
}
}
변수를 3개 사용해서for 문을 3개 사용할 생각함
중괄호로 반복문을 따로 정한게 아니라 그냥 안정하고 중괄호를 막 마지막에 다 몰아넣음..
공백 + + 공백 이렇게 생각한게 패착인듯.. 을 7개 출력해야한다고 생각해서 for문 이용해서 7보다 작다고 설정해야된다고 생각함.

class Day4_Q6{
public static void main(String[]args){
System.out.println(15678 >> 2 & 1)
System.out.println(15678 >> 4 & 0)
}
}
얘는 아직 이해 안가는 부분 존재,
class Day4_1_Q1{
public static void main(String[] args) {
oper(10,10);
}
public static void oper(int num1, int num2) {
System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));
System.out.println(num1 + " - " + num2 + " = " + (num1 - num2));
System.out.println(num1 + " * " + num2 + " = " + (num1 * num2));
System.out.println(num1 + " / " + num2 + " = " + (num1 / num2));
System.out.println(num1 + " % " + num2 + " = " + (num1 % num2));
}
}
연산은 + 와 우선순위가 동일하기 때문에 괄호를 해주지 않으면 에러
가독성을 위해 다 괄호를 해줬다.
return은 사용 안할것이기 때문에 void를 사용 후 호출만 해줬다.

return값 x
class Day4_1_Q2{
public static void main(String[]args){
multi(3);
}
public static void multi(int a) {
for(int j = 1; j < 10;j++) {
System.out.println(a + " * "+ j + " = " + a*j);
}
}
}

class Day4_1_Q3{
public static void main(String[]args){
multi(3,5);
}
public static void multi(int a, int b) {
for(; a <= b;a++) {
for(int j = 1; j < 10;j++) {
System.out.println(a + " * "+ j + " = " + a*j);
}
}
}
}

예 5를 넘겨주면 1부터 5까지 순차적으로 더해서 그 값을 리턴
class Day4_1_Q4{
public static void main(String[]args){
System.out.println(multi(5));
}
public static int multi(int a) {
int i = 0, sum = 0;
for(i = 1; i <= a; i++) {
sum += i;
}
return(sum);
}
}
5와 10을 넘겨주면 5부터 10까지 순차적으로 더해서 그 값을 리턴
class Day4_1_Q5{
public static void main(String[]args){
System.out.println(multi(5,10));
}
public static int multi(int a, int b) {
int sum = 0;
for(; a <= b; a++) {
sum += a;
}
return(sum);
}
}
class Dat4_1_Q6{
public static void main(String[]args){
System.out.println(multi(5));
}
public static int multi(int a) {
int i = 0, fac = 1;
for( i = 1; i <= a; i++) {
fac *= i;
}
return(fac);
}
}
갑자기 저 값들을 어떻게 곱해서 더해놓지 라는 뇌정지가 왔다...
그냥 fac *= i;하면 됐는데..
class Day4_1_Q7{//내가 작성한 소스
public static void main(String[]args){
System.out.println(sosu(11));
}
public static boolean sosu(int a) {
int i = 0;
boolean flag = true;
if(a <= 1) {
flag = false;
}for(i = 2; i < a; i++) {
if(a % i == 0) {
break;
}
}if(a == i) {
}else {
flag = false;
}
return(flag);
}
}
class Day4_1_Q7{ //간단하게 이렇게도 작성가능
public static void main(String[] args){
System.out.println(sosu(11));
}
public static boolean sosu(int a) {
int i = 0;
if(a <= 1) {
return false;
}for(i = 2; i < a; i++) {
if(a % i == 0)
return false;
}
return true;
}
}
for(int num = 1; num < 100; num++) {//틀린 문장
if(sosu(num){ System.out.println(num); //여기서 에러
}
}
public static boolean sosu(int a) {
int i = 0;
boolean flag = true;
if(a <= 1) {
flag = false;
}for(i = 2; i < a; i++) {
if(a % i == 0) {
break;
}
}if(a == i) {
System.out.println(a);
}else {
flag = false;
}
return(flag);
}
}
for(int num = 1; num < 100; num++) { //정답인 문장
if(sosu(num))
System.out.println(num);
}
}
public static boolean sosu(int a) {
int i = 0;
boolean flag = true;
if(a <= 1) {
flag = false;
}for(i = 2; i < a; i++) {
if(a % i == 0) {
break;
}
}if(a == i) {
}else {
flag = false;
}
return(flag);
}
}
main메소드에서 1~100까지 sosu메소드에 넣을 수 있는 반복문을 만들고
if문을 사용해 호출과 값을 받아오는 역할을 맡게한다.
그 후에 println(num)을 작성하면 sosu메소드에서 반환된 소수들을 출력시킨다.