오늘은 퀴즈로 하루를 시작했다.
1 ) 시작은 간단히 While문을 이용하여 Hello world를 3회 출력하라이다.
int n1 = 0;
while(true){
Syso("Hello world");
n1++;
if(n1==3){
break;
}
}
2 ) 1부터 20까지 한 줄에 띄어쓰기로 구분하여 출력하라
int n2 = 1;
while(n2 <= 20){
System.out.print(n2, " ");
}
syso();
3 ) A부터 Z까지 한 줄에 콤마로 구분하여 출력하세요
단, 마지막에는 콤마가 없어야 한다.
char ch = 'A';
while(true){
if(ch <= 'Z'){
System.out.print("\n");
} else{
System.out.print(", ");
ch++;
}
ch++;
}
4 ) 1부터 100사이의 정수 중 홀수의 합과 짝수의 합을 각각 계산하여 출력하세요
int oddSum = 0, evenSum=0. n4 = 1;
while(true){
if(evenSum%2 == 0 ){
evenSum += n4;
else if(oddSum%2 == 1){
oddSum += n4;
}
n4++;
}
System.out.printf("홀수의 합 : %d, 짝수의 합 : %d\n", oddSum, evenSum);
5 ) 입력받은 정수를 거꾸로 출력하세요
입력 : 1234
출력 : 4321
이 문제는 산당히 난해한 문제였다. 가장 간단한 방법으로는
int n5, result = 0;
while(n5 != 0){
result *= 10;
result += n5 % 10;
n5 /= 10;
}
Syso(result);
sc.colse()
}
}
하지만 이 방법을 사용하면 정수를 출력해줄수 없기 때문에 정공법은 아니라고 할수있다.
그렇기에 이런방법을 사용할수가 있다.
n5 = 1234 일 결우
int n5, result = 0;
Scanner sc = new Scanner(System.in);
n5 = Integer.parseInt(nextLine());
result *= 10; result = result * 10 = 0
result += n5 % 10; result = result + 1234 % 10 n5 = 1234 result = 4
n5 /= 10; n5 = n5 / 10 = 123
result *= 10; result = 4 * 10=40 result = 40
result += n5 % 10; result = 40 + 123 % 10 = 43 result = 43
n5 /= 10; n5 = 123 / 10= 12 n5 = 123
result *= 10; reuslt = 43 * 10 = 430 result = 430
result += n5 % 10; result = 430 + 12 % 10=432 result = 432
n5 /= 10; n5 = 12 / 10 = 1 n5 = 1
result *= 10; result = 432 * 10 =4320 result = 4320
result += n5 % 10; result = 4320 + 1 % 10= 4321 result = 4321
n5 /= 10; n5 = 1 / 10 = 0 n5 = 0;
while(n5 != 0){
System.out.print(n5 % 10);
}
syso();
이런식으로 상당히 번거롭지만 정공법으로도 가능하다.
6 )첫날에 10원으로 시작하여, 하루가 지날때 마다 2배씩 입금 금액을 늘려나간다.
이런 식으로 30일동안 입금했을때, 은행에 누적된 총 금액이 얼마인지 계산해서 출력하라
int day = 1;
long money = 10;
long bank = 0 ;
while(true){
bank += money; //bank계좌에 금액이 10씩 증가한다
money *= 2; // 그 bank계좌에 있는돈을 2배씩 증자시켜준다
day++
if(day <= 30){ //이런 행동은 30번 반복한다
break;
}
System.out.printf("%d\n" , bank);
}|
}
결과적으로 10,20,40,80,160,320 이런식으로 싹인것을 한번에 더해준다
주의해야 할 점은 나도 그렇지만 int형으로 변수를 선언해 버리면 저장가능한 값은 넘어버리기 때문에 -로 표시해 버린다.
그러니 더 큰 값를 저장할수 있는 long타입을 선언하자
오늘의 메인은 String의 함수이다.
간단히 보자면
Hello라는 값을 분리하고 싶을때
charAt을 이용하여 원하는 위치의 글자를 뽑을수 있다
syso(s1.charAt(0)) 이런식으로 사용하면 Hello에서 0번째 글자를 추출하는것이다. 그리고
s1.contains("Hell")); 이렇게 사용하면 Hell포함되어 있는지 확인할수 있다.
s1.replace("l","L"); 이런식으로 사용하면 l일 L로 변경도 가능하다
s1.indexOf("el");는 el이 몇번째에 있는지를 물어보는 것이다. 이렇게 사용하면 Hello에서 e는 2(1번위치)번째에 있으니 1을 출력할것이다.
그리고 가장 많이 어렵기도 했고 중요했던 s1.subString이다. 이건 웹개발에서 많이 사용되는 함수인데 이런식으로 사용가능하다.
만약
String web = "https://www.naver.com"; 이라고 선언하고 subString을 사용하면
syso(s1.subString(0, web.indexOf("www.naver.com"))); 이렇게 하면 0번째부터 www부분의 시작부분까지 구분해서 뒷 부분을 잘라버린 결과 https://만 출력된다.
이것 외에도 s1.subString("https://".length()); 이렇게 사용하면 https://의 갯수 이전의 글자를 잘라버린다.
subString(arg1, arg2) subString은 이렇게 두개가 한개의 인수가 들어가게 된다. 한개만 들어갔을경우 시작지점을 지정하는것이다. arg2는 끝 지점을 정하는 것이며 시작이점과 끝지점 이외의 글자를 지워버린다.
다른 함수도 있지만 사용빈도가 그리 커보이진 않는다. 하지만 일적 적어보도록 하겠다.
s1.startWith("He") : He로 시작하는가
s1.endWith("o") : o로 끝나는가
s1.toUpperCase() : 대문자로 변환
s1.toLowerCase () : 소문자로 변환
subString을 조금 더 어렵게 변환시키면 이렇게도 사용가능하다.
String url = "https://search.naver.com/search.naver";
url += "?query=뉴스&where=image";
String s1 = url.substring(0, url.indexOf("?")); //윗 줄과 아랫 줄을 분리시키는 용도
String s2 = url.substring(url.indexOf("?"));
String protocol = s1.substring(0, s1.indexOf("//") + "//".length()); 이렇게 사용하면 //이 있는 search앞 부분부터 뒷 글자를 다 잘버린다. 결국 https:// 만 남는다.
오늘은 String의 전체적인 내용에 대해서 알아봤는데 처음이라 그런지 상당히 어렵게 느껴졌다.
어떻게든 문제를 풀고면서 따라가고는 있지만 이렇게 처음보는 내용을 바로 응용해서 따라가려니까 내가
뒤쳐지는 것이 아닌가 불안할때가 있지만 이렇게 복습도 하면서 하면 나아질것 이라고 믿는다.
이 교실에서 절반이상의 수강하시는 분은 이미 유료선수과정을 다 받고 오신분인것 같다.
이미 배운사람에 비해서는 뒷떨어질수도 있지만 지금까지는 잘하고 있다고 생각한다.
열등감을 느끼면서 나 자신을 낮추는것 보다는 잘하는 사람들을 보면서 그 사람들에게 배울수 있는것이 있으면 적극적으로 배우는 자세로
계속 해나가보자.
정처기도 공부중이고 6개월뒤에는 맘편하게 회사를 고르고 있으면좋겠다.
그럼 오늘은 이것으로 마치겠다.
'JAVA 공부' 카테고리의 다른 글
자바의 기초 - 객체지향파트 중 생성자(Constructor) (0) | 2023.03.23 |
---|---|
자바의 기초 - loop문 응용, array(배열) (0) | 2023.03.19 |
자바의 기초 - for문 (0) | 2023.03.17 |
자바 기초 - Operator (4) | 2023.03.13 |
자바의 기초-연산자,스캐너,printf,equals함수 (0) | 2023.03.11 |