반응형
실전 문제
컴퓨터가 1~100 숫자(정수 범위) 중 하나를 랜덤으로 정합니다. (이를 알려주지 않습니다.)
사용자는 이 숫자를 맞추어야 합니다.
입력한 숫자보다 정답이 크면 → "UP" 출력,
입력한 숫자보다 정답이 작으면 → "DOWN" 출력.
정답을 맞추면 → "정답"을 출력하고, 지금까지 숫자를 입력한 횟수를 알려줍니다.
public class Test01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = 0;
int random = (int)(Math.random()*100+1);
System.out.println("컴퓨터가 정한 랜덤 숫자를 맞춰보세요.");
while (true) {
System.out.println("숫자 입력 : ");
int input = sc.nextInt();
if (input > random) {
System.out.println("DOWN");
count++;
} else if (input < random) {
System.out.println("UP");
count++;
} else {
System.out.println("정답! " + count + "회 걸렸네요.");
break;
}
}
sc.close();
}
}
- 배열복사
배열의 값을 다른 배열에 복사하기
- System.arraycopy
- clone();
* arraycopy
- Object src, int srcPos, Object dest, int destPos, int lenght
- src 원본
- srcPos 어느 위치부터 복사?
- dest 값을 담을 배열
- destPos 어느 위치에 담을건지?
- length 어느 길이만큼 복사?
public class ArrayCopy02 {
public static void main(String[] args) {
int arr1[] = new int[] {10,20,30,40,50,60};
int arr2[] = new int[6];
System.arraycopy(arr1, 0, arr2, 0, arr1.length);
System.out.println(arr1);
System.out.println(arr2);
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
int[] arr3 = new int[arr2.length];
arr3 = arr2.clone();
System.out.println(arr2);
System.out.println(arr3);
System.out.println(Arrays.toString(arr2));
System.out.println(Arrays.toString(arr3));
}
}
사용자가 홀수 양의 정수를 입력하면(입력이 항상 유효하다고 가정해도 됩니다),
문자 N을 사용하여 만든 ASCII 예술 문자 N을 출력하는 프로그램을 작성합니다.
//1. 입력받기 -> 스캐너
Scanner sc = new Scanner(System.in);
System.out.print("enter in an odd positive integer : ");
int input = sc.nextInt();
while (input % 2 == 0 || input < 0) {
System.out.print("PLZ! odd positive integer :");
input = sc.nextInt();
}
//2. 배열만들기 -> N 한글자
char chArray[][] = new char[input][input];
for (int i = 0; i < input; i++) {
for (int j = 0; j < input; j++) {
//3. 특정위치에 N넣기 -> index확인해주세요.
if(j == 0 || j == input-1 || j == i) {
chArray[i][j] = 'N';
}else {
chArray[i][j] = ' ';
}
}
}
//4. 출력하기
for (int i = 0; i < chArray.length; i++) {
for (int j = 0; j < chArray[i].length; j++) {
System.out.printf("%c", chArray[i][j]);
}
System.out.printf("%n");
}
sc.close();
}
}
--------------------- 더 간단한 방법 ---------------------
public class Test03 {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
System.out.println("라인 수 입력");
int num = sc.nextInt();
for (int i = 0; i < num; i++) {
for (int j = 0; j < num; j++) {
if (j == 0 || j == num-1 || j == i) {
System.out.print("N");
} else {
System.out.print(" ");
}
}
System.out.println("");
}
sc.close();
}
}
- 이중 for문
- import 정리 : 안 쓰는 것은 삭제, 필요한 것을 추가해줌.
- Ctrl + shift + 0
- Ctrl + Shift + L = 모든 명령어
public class Study05 {
public static void main(String[] args) {
int arr1[][] = new int[10][5] ;
// 배열 속에 배열
// 배열 쓰는 이유 : 같은 타입의 여러 값을 한 변수에 저장
System.out.println(arr1); // 주소 값이 나옴.
System.out.println(arr1[0]);
System.out.println(arr1[0][0]); // 0번에 0번째 열어줘. = 배열 속 값
System.out.println(arr1[0].length); // 배열을 한 번 열고 그 속의 길이
for (int i = 0; i < arr1.length; i++) { // 밖 (10개)
for (int j = 0; j < arr1[i].length; j++) { // 내부 (5개)
System.out.print(arr1[i][j]); // 총 50번 반복
}
System.out.println(""); // enter, 10번 반복
}
}
}
- String 사용방법
- 독특함
- #불변, #주소값, #문자열, #나누기, #GC
- 문자열을 저장합니다. 값 저장할 때 "" 쌍따옴표 사용
- ""값을 기준으로 인스턴스를 생성함
- ★ 값이 같으면 같은 값을 가진 기존의 인스턴스를 참조 (바라봅니다.)
public class String01 {
public static void main(String[] args) {
String hi = new String("Hi"); // R타입 객체타입
String hi2 = new String("Hi");
hi = "안녕";
hi = "Hello";
System.out.println(hi == hi2); // false
// R타입에서 ==는? 같은 객체냐고 물어보는 것.
// String의 비교는 equals 써야함
System.out.println(hi.equals(hi2)); // true
String name = "";
for (int i = 0; i < 20; i++) { // 지우고 다시 생성
name += i;
}
// String 대신에 사용하는 것
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 20; i++) { //
sb.append(i);
}
sb.append("Hi"); // append = 값을 저장
sb.append("hi");
sb.append("Hello");
sb.append("안녕");
System.out.println(sb); // HihiHello안녕
String temp = sb.toString(); // string 타입으로 변환해서
temp = "안녕하세요.";
// indexOf() : 특정 문자가 몇 번째 인덱스에 있는지 출력함.
System.out.println(temp.indexOf('녕')); // 1
System.out.println(temp.indexOf('강')); // 없을 때는 -1
System.out.println(temp.indexOf('요')); // 4
}
}
반응형
'개발 공부 Today I Learned' 카테고리의 다른 글
[국비 18일차 TIL] 객체 지향 OOP (0) | 2023.12.14 |
---|---|
[국비 17일차 TIL] 자바 String 메소드 (0) | 2023.12.13 |
[국비 15일차 TIL] 자바 반복문 while, do-while, switch, 동적가변배열 (1) | 2023.12.11 |
[국비 14일차 TIL] JAVA 2차원 배열 (1) | 2023.12.08 |
[국비 13일차 TIL] JAVA 배열 연습 (2) | 2023.12.07 |
댓글