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