h-i-s-t-o-r-y

[Java] 입력받아 출력하기 본문

Java

[Java] 입력받아 출력하기

H' 2021. 7. 12. 20:17

▷ BufferedReader

> 입력받은 문자열 출력

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

System.out.print("> 이름을 입력하세요 ? ");
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) );

// Unhandled exception type IOException
// br.readLine() 함수를 사용하려면 IOException 예외 처리해야 한다고만 알고 있을 것.. (나중에)
String name = br.readLine();
System.out.printf("> 이름 : %s\n", name );

> 입력받은 문자열, 정수 출력

String name;
byte kor, eng, mat;
short tot;
double avg;

System.out.print("1. 이름 입력하세요 ? ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
name = br.readLine();

 


- [오류] Type mismatch: cannot convert from [String] to [byte]

  입력받는 문자는 기본적으로 문자열 형태이기 때문에,

  변수의 자료형에 맞는 형변환이 필요하다.

// 기본형클래스.parse기본형();
System.out.print("2. 국어 입력하세요 ? ");
kor = Byte.parseByte(br.readLine());

System.out.print("3. 영어 입력하세요 ? ");
eng = Byte.parseByte(br.readLine());

System.out.print("4. 수학 입력하세요 ? ");
mat = Byte.parseByte(br.readLine());

 

- [오류] Type mismatch: cannot convert from int to short

  자료형이 다른 변수끼리 연산을 할 때,

  오류가 발생하거나 값손실이 일어날 수 있으므로

  상황에 따라 강제 형변환이 필요하다

tot = (short)(kor + eng + mat);
// 연산결과가 short 저장범위를 초과하여 오류발생

avg = (double)tot / 3;
// short / int -> 결과는 int, 3.333이더라도 결국 int라서 3.00 저장됨

System.out.printf("> 이름 : %s, 국어 : %d, 영어 : %d, 수학 : %d, 총점 : %d, 평균 : %.2f\\n"
                , name, kor, eng, mat, tot, avg);

 


▷ Scanner

> 입력받은 문자열, 정수 출력

import java.util.Scanner;

String name;
byte kor, eng, mat;
short tot;
double avg;

System.out.print("> 이름 국어 영어 수학 입력하세요 ? ");
Scanner scanner = new Scanner(System.in);

name = scanner.next();
kor = scanner.nextByte();
eng = scanner.nextByte();
mat = scanner.nextByte();

tot = (short)(kor + eng + mat);
avg = (double)tot / 3;

System.out.printf("> 이름 : %s, 국어 : %d, 영어 : %d, 수학 : %d, 총점 : %d, 평균 : %.2f\\n"
                , name, kor, eng, mat, tot, avg);

 


> 입력받은 문자의 콤마, 공백 제거

- split() 함수

1. 기능 : 문자열을 잘라내는 함수

2. 매개변수 : 잘라내는 기준이 되는 구분자

3. 리턴값 : String[]

String name;
int kor, eng, mat, tot;
double avg;

System.out.print("> 이름, 국어, 영어, 수학 입력하세요 ? ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String value = br.readLine();

// 입력받은 문자열에서 콤마, 공백으로 문자를 구분하여 values 배열에 넣겠다.
// String regex "정규표현식" 콤마 앞뒤로 공백이 있어도 되고 없어도 됨.
String [] values = value.split("\\s*,\\s*");

// split()함수로 구분한 String들을 int로 변환
name = values[0];
kor = Integer.parseInt(values[1]);
eng = Integer.parseInt(values[2]);
mat = Integer.parseInt(values[3]);

- trim() 함수

문자열의 앞뒤 모든 공백을 제거하는 함수

name = values[0].trim();
kor = Integer.parseInt(values[1].trim());
eng = Integer.parseInt(values[2].trim());
mat = Integer.parseInt(values[3].trim());

 

 

Comments