<연습문제>
// 문제 : while문을 이용해 콘솔창에 랜덤한 숫자를 입력한 구구단을 출력하시오
// 풀이 :
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
System.out.print("숫자를 입력하시오->");
int answer = sc.nextInt();
int i= 1;
while (i<=9) {
System.out.println(answer + "x" + i + "=" + (answer*i++));
}
// 답 :
숫자를 입력하시오->4
4x1=4
4x2=8
4x3=12
4x4=16
4x5=20
4x6=24
4x7=28
4x8=32
4x9=36
4x10=40
----------------------------------------------------------------------------
<반복문 do-while>
일단 실행 do {명령;} 하고
비교 while (조건); 하는 문법.
그래서 게임짤 때 많이 이용함.
반드시 한번은 실행하게 되어 있는게 while문과의 차이.
일단 먼저 명령을 실행하고 조건에 따라 반복하거나 안하거나.
do {
명령;
} while (조건);
while문은 조건식에 부합할 경우 코드 블럭을 실행하지만,
dowhile문은 일단 코드 블럭을 무조건 한번 실행한 후, while문의 조건을 비교.
즉, while문의 조건을 확인하기 이전에 do 내부의 코드블럭을 한 번 시행한 후,
그 이후에 while문의 조건에 일치하지 않으면 더 이상의 실행은 하지않고 출력을 하게 되는 것.
<연습문제>
// 문제 : DoWhile문을 이용해 1~100 사이의 숫자를 콘솔창에 입력해 맞추시오.
// 풀이 :
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
int com = (int)(Math.random()*100 + 1);
int answer = 0;
int count = 0;
do {
System.out.print("숫자를 맞춰보세요->");
answer = sc.nextInt(); // 콘솔창에 내가 입력하는 함수 (=나의 답)
count++; // 내가 입력한 횟수를 카운트를 누적함.
if (com > answer) System.out.println(answer+"보다 크다");
else if (com < answer) System.out.println(answer+"보다 작다");
else {
System.out.println(count+"번 만에 맞췄네");
break;
}
} while (true);
// 답 :
숫자를 맞춰 보세요->9 (콘솔창에 내가 입력)
9보다 크다
숫자를 맞춰 보세요->50 (콘솔창에 내가 입력)
50보다 크다
숫자를 맞춰 보세요->70 (콘솔창에 내가 입력)
70보다 작다
숫자를 맞춰 보세요->60 (콘솔창에 내가 입력)
60보다 작다
숫자를 맞춰 보세요->55 (콘솔창에 내가 입력)
55보다 크다
숫자를 맞춰 보세요->57 (콘솔창에 내가 입력)
6번 만에 맞췄네
// 문제 : DoWhile을 이용해서 1~100 사이의 짝수만 합계를 구하시오.
// 풀이 :
// 짝수 구하는 조건 : 변수%2 == 0
int i = 1; // int i 변수를 선언하고, 1로 초기화.
int sum = 0;
do {
if (i%2 == 0) { // i가 짝수면,
sum += i; // sum = sum + i; (sum 변수에 i를 더해라)
}
i++; // i를 1 증가시킴
} while (i<=100); // i가 100보다 작거나 같을 동안 다음을 반복해라.
System.out.println("합=" +sum); // 합을 출력함.
// 답 : 5050
----------------------------------------------------------------
int a; 기본값이 0으로 들어가 있음.
double a; 기본값이 0.0으로 들어가 있음.
static : 객체화 = 메모리할당
stack : 변수명, 배열명
heap : 객채, 인덱스값
변수는 두 종류가 있음.
1. 값을 저장하는 변수
2. 주소를 저장하는 변수 = 참조변수
int[] a = new int[5];
// a가 배열명이자 배열 변수명으로 쓰임
// int[] a 배열을 선언하고, 크기를 5로 지정.
for (int i=0; i<a.length; i++) { // .length는 배열크기(방의수)를 의미함
a[i] = i + 1;
}
// i 변수를 선언하고, 0으로 초기화.
// i가 a배열의 크기보다 작을 동안 다음을 반복해라.
// i를 1씩 증가시켜라.
// a배열의 i번째 방에 i + 1을 저장해라.
// 따라서 1부터 5까지의 숫자를 a배열의 0번째 방부터 4번째 방까지 순서대로 저장.
// 답 :
a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4
a[4] = 5
그러나 return문을 사용하지 않았기 때문에, return값은 따로 없음.
----------------------------------------------------------------
<Array 문법 = 배열>
같은 타입의 데이터 집합, 다른타입은 절대 들어올 수 없다는 것이 핵심.
int[ ] a = new int[4]; // int배열타입, 숫자4는 크기를 의미함.
char[] ch = new char[5]; // Char배열 타입의 5개의 방을 생성
----------------------------------------------------------------
<반복문 for-each>
for-each문은 배열이나 컬렉션의 요소를 하나씩 얻어 처리할 때 사용하는 반복문.
for문과 유사하지만
for문은 반복 횟수를 명시적으로 지정해야 하는 반면,
for-each문은 반복 횟수를 자동으로 계산함.
for (변수명 : 객체) {
반복할 코드;
}
// 예시 :
int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
System.out.println(number);
}
// 답 :
1
2
3
4
5
// 예시 :
List<String> names = Arrays.asList("John", "Jane", "Mary");
for (String name : names) {
System.out.println(name);
}
// 답 :
John
Jane
Mary
for-each문은 for문과 비교하여 다음과 같은 장점이 있다.
코드가 간결하다.
반복 횟수를 명시적으로 지정할 필요가 없다.
배열이나 컬렉션의 요소를 순차적으로 처리할 때 유용하다.
for-each문은 for문과 비교하여 다음과 같은 단점이 있다.
반복 횟수를 제어할 수 없다.
배열이나 컬렉션의 요소를 역순으로 처리할 수 없다.
----------------------------------------------------------------
< 연습문제>
// 문제 : 5개의 방을 생성해서 1~5까지의 숫자를 뽑아라.
// 풀이 :
int[] a = new int[5];
for (int i=0; i<5; i++) {
a[i] = i+1;
System.out.println(a[i]);
}
// 답 :
1
2
3
4
5
// 문제 : 50개의 방에 1~50까지 값을 초기화 한 후 41을 뽑아내시오.
// 풀이 :
int[] num = new int[50];
for (int i=0; i<num.length; i++) {
num[i] = i+1;
}
System.out.println(num[40]);
// 답 : 41
// 문제 : Char배열 타입의 5개의 방을 생성하고, 각 방은 'A'(65)~'E'(69)로 초기화 하라.
// 풀이 :
// char a = 'A';
// System.out.println((int)a); // 강제 형변환, 무조건 되는건 아님. 안되는건 에러표시가 남.
// char b = 'B';
// System.out.println((int)b); // 강제 형변환, 무조건 되는건 아님. 안되는건 에러표시가 남.
// char c = 'C';
// System.out.println((int)c); // 강제 형변환, 무조건 되는건 아님. 안되는건 에러표시가 남.
// char d = 'D';
// System.out.println((int)d); // 강제 형변환, 무조건 되는건 아님. 안되는건 에러표시가 남.
// char e = 'E';
// System.out.println((int)e); // 강제 형변환, 무조건 되는건 아님. 안되는건 에러표시가 남.
// 답 : A(65), B(66), C(67), D(68), E(69)
char[] ch = new char[5]; // char[] ch 배열을 선언하고, 크기를 5로 지정.
for (int i=0; i<ch.length; i++) {
// i 변수를 선언하고, 0으로 초기화 한 다음,
// i가 ch 배열의 크기보다 작을 동안 다음을 반복해라.
// i를 1씩 증가시켜라.
ch[i] = (char)(65+i); // ch배열의 i번째 방에 65+i를 저장해라.
}
System.out.println(ch[i]); // ch배열의 i번째 방의 값을 출력해라.
}
// 따라서, A부터 E까지의 문자를 ch배열의 0번째 방부터 4번째 방까지 순서대로 저장함.
//
ch[0] = 'A'
ch[1] = 'B'
ch[2] = 'C'
ch[3] = 'D'
ch[4] = 'E'
//답 :
A
B
C
D
E
// 문제 : str 값들에 있는 과일들을 출력하라.
// 풀이 :
String [] str = new String[3]; // String 타입의 3개의 방을 생성
str[0] = "바나나";
str[1] = "귤";
str[2] = "샤인머스켓";
for (int i=0; i<str.length; i++) {
System.out.println(str[i]);
}
// 답 :
바나나
귤
샤인머스켓
// 문제 : str[2]의 데이터 크기는 얼마인가?
// 풀이 :
String [] str = new String[3]; // String 타입의 3개의 방을 생성
str[0] = "바나나";
str[1] = "귤";
str[2] = "샤인머스켓";
for (int i=0; i<str.length; i++) {
System.out.println(str[2].length()); //방의 데이터 크기를 나타냄 (샤인머스켓은5글자)
}
// 답 : 5
// 문제 : for-each문법(=향상된 for문)을 이용하여 str값들에 있는 과일들을 출력하라.
// 풀이 :
String [] str = new String[3]; // String[] str 배열을 선언하고, 크기를 3으로 지정.
str[0] = "바나나";
str[1] = "귤";
str[2] = "샤인머스켓";
// str[0], str[1], str[2]에 각각 "바나나", "귤", "샤인머스켓"을 저장.
for (String a : str) {
// for문을 사용하여 str 배열의 각 요소를 a변수에 저장한 다음, a변수의 값을 출력
// 따라서, str 배열의 0번째 부터 2번째 까지 순서대로 출력.
System.out.println(a); // a 변수의 값을 출력.
}
// 답 :
바나나
귤
샤인머스켓
'JAVA' 카테고리의 다른 글
<JAVA_PreClass_231016월> (0) | 2023.10.16 |
---|---|
<JAVA_PreClass_231013금> (0) | 2023.10.13 |
<JAVA_PreClass_231011수> (2) | 2023.10.11 |
<JAVA_PreClass_231010화> (0) | 2023.10.10 |
<JAVA_PreClass_231006금> (0) | 2023.10.06 |