Hyogi's Notebook

Day02 JAVA Studying

by 효기’s

- 스위치(switch)문

package test;

import java.util.Scanner;

public class study04 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in); // 도적 메모리할당
		
		String str = sc.next();
		
		switch(str) {
		
		case "+":
			System.out.println("+");
			break;
		case "-":
			System.out.println("-");
			break;
		case "*":
			System.out.println("*");
			break;
		case "/":
			System.out.println("/");
			break;
		
		default :
			System.out.println("nothing");
		}

	}

}

switch문을 이용한 사칙연산 계산기

/*
  사칙연산 switch 계산기 만들기
  
   3 + 4 -> 입력 -, *, /
   3 + 4 = 7 -> 출력
*/

package test;

import java.util.Scanner;

public class study05 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		String str1 = sc.next(); // nextLine이 아니라 next를 사용하여 스페이스바 사용하여 입력가능함.
		
		String op = sc.next(); // 연산을 입력받음
		
		String str2 = sc.next(); // str2를 입력받음
		
	
		int num1 = Integer.parseInt(str1); // str1 문자열 int로 형변환
		int num2 = Integer.parseInt(str2); // str2 문자열 int로 형변환
		int num3 = 0; // 결과값 선언
		
		
		switch(op) {
		
		case "+":
			num3 = num1 + num2;
			break;
		case "-":
			num3 = num1 - num2;
			break;
		case "*":
			num3 = num1 * num2;
			break;
		case "/":
			num3 = num1 / num2;
			break;
		}
		
		
		// 마지막 결과값을 출력
		System.out.println(str1 + op + str2 + "=" + num3);

		
	}
	
}

for반복문을 이용한 종이 접기 문제

Q. 종이를 접었을때 생기는 사각형의 개수와 접은 횟수를 구하시오

// 종이 접기 문제

package test;

public class study06 {

	public static void main(String[] args) {
		
		int count = 0;
		int rect = 1;
		
		for(count=0; rect<=500; count++) {
			rect = rect * 2; // 두배씩 커지며 더해감
		}
		
		System.out.println(rect);
		System.out.println(count);
	}

}

Q.2단부터 9단까지 세로로 구구단을 출력하시오

package test;

public class study07 {

	public static void main(String[] args) {
		
		
		for(int i = 1; i < 10; i++) { // 1~9 까지 곱해지는 숫자
			
			for(int j = 2; j < 10; j++) { // 2~9 까지 곱하는 숫자
				
				System.out.print(j + "x" + i + "=" + i*j + "\t");

				
			}
			System.out.println(); 
		}
		
	}

}

Q. 종이접기 문제를 for문에서 while문으로 변경하시오

package test;

public class study08 {

	public static void main(String[] args) {
		
//		int count = 0;
//		int rect = 1;
//		
//		for(count=0; rect<=500; count++) {
//			rect = rect * 2;
//		}
//		
//		System.out.println(rect);
//		System.out.println(count);
//	}
		
		
		int count = 0;
		int rect = 1;
		while(rect <= 500) {
		
		rect = rect * 2;
			
		
		count ++;
		
		}
		System.out.println(rect);
		System.out.println(count);
	}
}

Q. 구구단을 for문에서 while문으로 변경하시오.

package test;

public class study09 {

	public static void main(String[] args) {
		
//		for(int i = 1; i < 10; i++) {
//			
//			for(int j = 2; j < 10; j++) {
//				
//				System.out.print(j + "x" + i + "=" + i*j + "\t");
//
//				
//			}
//			System.out.println(); 
//		}

		int i = 1;
		while(i < 10) { // 1~9까지 출력
			
			int j = 2;
			
			while(j < 10) { // 1~9까지 출력
				
				System.out.print(j + "x" + i + "=" + i*j + "\t"); // 곱셈 출력
				
				j++;
			}
			
			System.out.println(); // 개행
			i++;
		}
		
	}

}

Q. do while문을 이용한 사칙연산 switch 계산기 만들기

/*
  do while문을 이용한 사칙연산 switch 계산기 만들기
  
   3 + 4 -> 입력 -, *, /
   3 + 4 = 7 -> 출력
*/

package test;

import java.util.Scanner;

public class study10 {

	public static void main(String[] args) {
		
		String inputString;
		
		do {
			
			Scanner sc = new Scanner(System.in);
			
			System.out.println("예) 3 * 4 입력하세요");
			
			String str1 = sc.next(); // nextLine이 아니라 next를 사용하여 스페이스바 사용하여 입력가능함.
			
			String op = sc.next(); // 연산을 입력받음
			
			String str2 = sc.next(); // str2를 입력받음
			
		
			int num1 = Integer.parseInt(str1); // str1 문자열 int로 형변환
			int num2 = Integer.parseInt(str2); // str2 문자열 int로 형변환
			int num3 = 0; // 결과값 선언
			
			
			switch(op) {
			
			case "+":
				num3 = num1 + num2;
				break;
			case "-":
				num3 = num1 - num2;
				break;
			case "*":
				num3 = num1 * num2;
				break;
			case "/":
				num3 = num1 / num2;
				break;
			}
			
			
			// 마지막 결과값을 출력
			System.out.println(str1 + op + str2 + "=" + num3);
			System.out.println("계속하려면 y또는 Y를 입력하세요.");
			inputString = sc.next();
			sc.nextLine(); // 개행문자 제거함 ★
			
			
		}while(inputString.equals("y") || inputString.equals("Y"));
		
		System.out.println("종료되었습니다.");
	}
	
}

Q. 

****

****

****

별을 찍으시오.

package test;

public class study11 {

	public static void main(String[] args) {
		
		
		for(int i = 0; i < 3; i++) { // 세로 3칸
			
			
			for(int j = 0; j < 4; j++) { // 가로 4칸
				
				System.out.printf("*");
			}
			
			System.out.println(); // 개행
		}

	}

}

Q.

*

**

***

별을 찍으시오.

package test;

public class study12 {

	public static void main(String[] args) {
		
		
		for(int i = 0; i < 3; i++) { // 세로 3칸
			
			for(int j = 0; j < i+1; j++) { // 1, 2, 3 순으로 별을 찍기
				
				System.out.printf("*");
				
			}

			System.out.println(); // 개행
		}
		
		
	}

}

Q.

  *

 **

***

별을 찍으시오.

package test;

public class study13 {

	public static void main(String[] args) {
		
		
		for(int i = 0; i < 3; i++) {
			
			for(int j = 0; j < 2-i; j++) { // 공백 2, 1 순으로 출력
				System.out.printf(" ");
			}
			
			for(int j = 0; j < i+1; j++) { // 1, 2, 3 순으로 출력
				
				System.out.printf("*");
				
			}

			System.out.println(); // 개행
		}
		
		
	}

}

Q.

  *  

 ***

*****

별을 찍으시오.

package test;

public class study14 {

	public static void main(String[] args) {
		
		
		for(int i = 0; i < 3; i++) {
			
			
			for(int j = 0; j < 2-i; j++) { // 2, 1
				
				System.out.printf(" "); // 공백 출력
				
				
			}
			
			for(int j = 0; j < 2*i+1; j++) { // 1, 3, 5
							
				System.out.printf("*"); // 별 출력
							
			}
	

			System.out.println(); // 개행
		}

	}

}

Q.

  *  

 ***

*****

 ***

  *

별을 찍으시오.

package test;

public class study15 {

	public static void main(String[] args) {
		
		// 위에
		for(int i = 0; i < 3; i++) { // 세로 3줄
			
			
			for(int j = 0; j < 2-i; j++) { // 2, 1
				
				System.out.printf(" "); // 공백
				
				
			}
			
			for(int j = 0; j < 2*i+1; j++) {  // 1, 3, 5
							
				System.out.printf("*"); // 별
							
			}
			
			
	

			System.out.println(); // 개행
		}
		
		// 아래
		
		for(int i = 0; i < 3; i+=2) {
			
			System.out.printf(" "); // 공백
			
			for(int j = 0; j < i; j+=2) { // 1, 2
				
				System.out.printf(" "); // 공백
				
				
			}
			
			for(int j = 3; j > i; j--) { // 3, 1
							
				System.out.printf("*"); // 별
							
			}
			
			
	

			System.out.println(); // 개행
		}

	}

}

Q.

홀수를 입력해서 다이아몬드 만들기

단 for문을 2개만 씀.(어려움)

package test;

import java.util.Scanner;

public class study16 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("홀수를 입력하세요.");
		
		String inputString;
		
		inputString = sc.nextLine(); // 입력
		
		int inputNum = Integer.parseInt(inputString); // 형변환
		
		
		int a = inputNum / 2; 
		int count = 0;
		
		for(int i = 0 ; i < inputNum; i++) { //층수
			
			for(int j = 0; j < count + a + 1; j++) { //각층 마다 공백 또는 별 표시
				
				String star = j < a - count ? " ":"*";
				System.out.print(star);
			}
			
			if(i < a) { //반환점 돌면 반대로 카운트하며 별표시
				count++;
				
			}else {
				count--;
				
			}
			
			System.out.println();
		}
		
		
	}

}

배열 = 동일한 데이터 타입을 메모리상에 순차적으로 나열한 메모리 구조

int [] arr;  1차원 배열

int [ ] [ ] arr;  2차원 배열

int [ ] [ ] [ ] arr;  3차원 배열

 

// 배열
package test;

public class study17 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int []arr = new int[3]; // 0, 1, 2
		
		int b = 1; // 지역변수는 꼭 초기화를 해서 사용해야 한다.
		
//		System.out.println(b);
		
		
		
		// 1차원 배열
		
//		for(int i = 0; i < 3; i++) { // 3이상의 숫자를 입력하면 초과 에러가 난다.
//			
//			System.out.println(arr[i]);
//			
//		}

		
		
//		for(int i = 0; i < arr.length; i++) {  // arr.length 사용
//			
//			System.out.println(arr[i]);
//			
//		}
		
		
		// 2차원 배열
		
		int [][]arr2 = new int[2][];
		
		arr2[0] = new int[3]; // 공간이 3개 들어감
		arr2[1] = new int[5]; // 공간이 6개 들어감
		
		
		for(int i = 0; i < arr2.length; i++) { //2
			for(int j = 0; j < 3; j++) { //3
				System.out.print(arr2[i][j]);
			}
			System.out.println(); // 개행
		}
		
	}

}

Q. 1차원 배열을 사용하여 성적처리

입력 : 이름, 국, 영, 수

연산 : 총점, 평균

출력 : 이름, 국, 영, 수, 총, 평

 

package test;

import java.util.Scanner;

public class study18 {

	public static void main(String[] args) {
		
		

		int []score = new int[4]; // 국, 영, 수, 총
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("이름, 국, 영, 수 입력하세요.");
		
		// 입력
		String name = sc.next();
		String kor = sc.next();
		String eng = sc.next();
		String math = sc.next();
		
		// 점수
		score[0] = Integer.parseInt(kor);
		score[1] = Integer.parseInt(eng);
		score[2] = Integer.parseInt(math);
		
		// 합
		score[3] = score[0] + score[1] + score[2];
		// 평균
		float avg = (score[3] / 3);
		
		System.out.println("이름 : " + name + " 국 : " + kor + " 영 :" + eng + " 수 :" + math + " 총 : " + score[3] + " 평: " + avg);
		

	}

}

Q. sc.next()와 sc,nextLine()의 차이

 

`Scanner` 클래스의 `next()`와 `nextLine()` 메서드는 입력 스트림에서 데이터를 읽어오는 데 사용됩니다. 그러나 이 두 메서드는 동작 방식과 반환값에 차이가 있습니다.

1. `next()`: 공백 이전까지의 문자열을 반환합니다.
   - `next()` 메서드는 공백을 기준으로 문자열을 분리하여 가져옵니다.
   - 예를 들어, "Hello World"를 입력했을 때, `next()`는 "Hello"만 반환합니다.
   - 따라서, 공백 이전까지의 문자열만 필요한 경우에 사용합니다.

2. `nextLine()`: 한 줄 전체를 반환합니다.
   - `nextLine()` 메서드는 개행 문자(`\n`)를 만날 때까지의 전체 문자열을 가져옵니다.
   - 예를 들어, "Hello World"를 입력했을 때, `nextLine()`은 "Hello World"를 반환합니다.
   - 따라서, 한 줄 전체를 읽어와야 하는 경우에 사용합니다.

이 두 메서드를 사용할 때 주의해야 할 점은 `next()`를 사용한 후에 `nextLine()`을 사용할 때 개행 문자(`\n`)가 입력 스트림에 남아있을 수 있다는 점입니다. 이 경우에는 `nextLine()`을 호출하기 전에 `next()`를 사용한 후에 `nextLine()`을 호출하면 개행 문자를 소비하여 원하는 입력을 정상적으로 읽을 수 있습니다

 

Q. 다차원 배열을 사용하여 세명의 사람의 성적처리를 구하시오.

package test;

import java.util.Scanner;

public class study19 {

	public static void main(String[] args) {
		
	// 1사람 성적처리
	    // 입력 : 이름,국,영,수
	    // 연산 : 총점,평균
	    // 출력 : 이름,국,영,수,총,평
		
	    String []scoName = {"국어","영어","수학"};
	    String []name = new String[3];
	    int [][]score = new int[3][4];// 국,영,수,총 
	    float []avg = new float[3] ; 
	    Scanner sc = new Scanner(System.in);
	    
	    
	    for(int i = 0; i < name.length; i++) { // 3번돌아감
	    	
	    	// 입력
	    	System.out.println("이름, 국, 영, 수 입력하세요.");
	    	name[i] = sc.next();   // 이름
	    	
	    	for(int j=0; j < score[i].length; j++) { // 4번돌아감
	    		
	    		if(j < score[i].length-1) { // -1이 총점을 뺸값 (score 배열에 총점도 포함하면 안되기때문에 -1 을 함)
	    			score[i][j] = sc.nextInt(); // 점수 입력
	    		}
	    		score[i][3] += score[i][j]; // 총점 연산
	    	
	    	}
	    	
	    	
	    	avg[i] = (float)score[i][3] / 3; // 평균
	    	
	    	
	    	System.out.println("이름 : " + name[i] + " 국 : " + score[i][0] + " 영 :" + score[i][1] + " 수 :" + score[i][2] + " 총 : " + score[i][3] + " 평: " + avg[i]);
	    	
	    }
				
		    
	    
	}
}

'Studying > JAVA' 카테고리의 다른 글

Day05 JAVA Studying  (0) 2023.07.07
Day04 JAVA Studying  (0) 2023.07.06
Day03 JAVA Studying  (0) 2023.07.05
Day02 [예제] 문자열 동등성 비교의 결과차이  (0) 2023.07.04
Day01 JAVA Studying  (0) 2023.07.04

블로그의 정보

감성 개발자 효기

효기’s

활동하기