혼자 풀어보는 연습문제

sim·2023년 3월 2일

자바의 정석

목록 보기
11/20

4-1
1) 10<x && x<20
2) !(ch==' '||ch=='\t')
3) ch=='x' || ch=='X'
4) '0'<=ch && ch<='9'
5) ('a'<=ch && ch<='z') || ('A'<=ch && ch<='Z')
6) year%400==0 || year%4==0 && year%100!=0
7) powerOn==false
8) str.equals("yes") 또는 "yes".equals(str)

4-2

int sum=0;
for (int i=1; i<=20; i++) {
if (i%2!=0 && i%3!=0) {
	sum += i;
}
}
System.out.println("2또는 3의 배수가 아닌수의 총합: "+sum);
}

4-3

int sum=0;
int totalSum=0;

for (int i=1; i<=10; i++) {
sum += i;
totalSum += sum;
}
System.out.println("result: "+totalSum);

4-4
어려워서 혼자 못풀었음..
다시 복기하며 적어보는 중
(내가 생각하지 못한 점 : for문 사용-> 왜냐면 몇 번 반복하는지 몰랐다. 그런데 조건식을 true로 써서 무한반복문으로 만들면 됨!// 증감식에서는 i++,컴마로 연결해서 값의 부호를 바꿔주는 변수도 써줄 수 있음!!// 그리고 그 안에 if문을 넣고, 100이상이 되면 멈추게 만들면 됨.)

int sum =0;
int x =1; 
int num = 0;

for (int i=1; true; i++, x=-x) {
num = x*i;
sum +=num;
if(sum>=100)
	break;
}
System.out.println("num=" +num);
System.out.println("sum=" +sum);

4-5
이것도 못풀었음... 왤케 어렵니...
(내가 생각하지 못한 점: 1줄에 별 1개, 2줄에 별2개, i와 j가 같음. 나는 10줄을 쓸거니까 i<=10이라는 조건 내세워야 함. / 별은 이어적어야 하므로 println말고 print로 사용/ j는 하나씩 커지면서 i와 같아질때까지 *을 적음. / 그 while문을 나오면 println()으로 줄바꿈./ i도 하나씩 커지면서 10에서 멈춤! )

int i =0; 

while (i<=10) {
int j=0; 
while (j<=i) {
	System.out.print("*");
    j++;
}
System.out.println();
i++;
}

4-6
뭐가 잘못된지 모르겠는데 자꾸 결과가 안나옴... 왜이래... ㅠ ㅠ 간단한건데!!
그래도 피드백 해보자.
일단 int i=0으로 설정함,,,

for (int i=1; i<=6; i++)
for (int j=1; j<=6; j++)
	if (i+j==6)
    	System.out.println(i+"+"+j+"="+(i+j));

4-7
돌고돌아 정답을 맞췄다... 쉽지않아. 엄청 간단한데 엄청 오래걸림.
for문으로 설정해놓았으니 i가 하나씩 증가하면서 대입되도록 만들어야함. + 문자열을 숫자로 만드는 charAt()사용해야함. + 그걸 하나씩 더하는 sum

String str = "12345";
int sum =0;

for (int i=0; i<str.length(); i++) {
sum += str.charAt(i)-'0';
}
System.out.println("sum= "+sum);

4-8
나름 금방 풀었다. 굳굳

int value = (int)(Math.random()*6)+1;

System.out.println("value: "+value);

4-9
7번이랑 비슷하지만 다른 문제. 문자열을 숫자로 바꾸는 것은 charAt() 활용하기/ 숫자라면 %10 나머지를 활용하여 풀기.

int num = 12345;
int sum = 0;

while (num >0) {
sum += num%10;
num /= 10;
}
System.out.println("sum= "+sum);

4-10
술술 잘써나갔다. 뿌듯해. 드디어 벨로그 내에서 알맞게 코드 쓰는법을 배웠다...바본가...

int answer = (int)(Math.random()*100)+1;
	int input = 0;
	int count = 0;
	
	java.util.Scanner s = new java.util.Scanner(System.in);
	System.out.println(answer);
	
	do {
		count++;
		System.out.print("1과 100사이의 값을 입력하세요 :");
		input = s.nextInt();
		
		if (input>answer) {
			System.out.println("더 작은 수를 입력하세요.");
		} else if (input<answer) {
			System.out.println("더 큰 수를 입력하세요.");
		} else {
			System.out.print("맞혔습니다."+"시도횟수는 "+count+"번입니다.");
			break;
		}
		
	} while(true);
	
profile
sim

0개의 댓글