========================================================
문) 피연산자1 연산자 피연산자2 형식으로 입력 받아 계산하라.
========================================================
숫자 문자 숫자
이걸 한 줄에 받아서 어떻게 읽어 오냐로 멍청하게 고민함
숫자는 Scanner.nextInt();로 각각 읽고
문자는 Scanner.next().charAt(0);로 읽어옴
Scanner의 next()라는 함수에 대해 개념이 부족했음
정리
java api
The next()
and hasNext()
methods and their primitive-type companion methods (such as nextInt()
and hasNextInt()
) first skip any input that matches the delimiter pattern, and then attempt to return the next token. Both
hasNext
and
next
methods may block waiting for further input. Whether a
hasNext
method blocks has no connection to whether or not its associated
next
method will block.
ex)
String input = "1 fish 2 fish red fish blue fish"; Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*"); System.out.println(s.nextInt()); System.out.println(s.nextInt()); System.out.println(s.next()); System.out.println(s.next()); s.close();
- next()는 첫 단어 앞의 공백이나 개행문자는 무시하고 하나의 단어를 입력 받고 단어 뒤의 개행문자는 그대로 둔다.
- 그 뒤의 개행문자나 기타 값을 버리기위해 next() 사용후 nextLine()으로 읽어와 버리는 방법도 있다.
ex)
Scanner sc = new Scanner(System.in);
sc = sc.next(); sc.nextLine();
- nextLine()는 라인 전체를 읽어온다.
- 문자 읽을때 next()만 쓰면 String형으로 맞추라고 에러 뜬다. 이때 charAt() 같이 써줌
- charAt
Returns the
char
value at the specified index. An index ranges from0
tolength() - 1
. The firstchar
value of the sequence is at index0
, the next at index1
, and so on, as for array indexing.If the
char
value specified by the index is a surrogate, the surrogate value is returned. - public char charAt(int index)
==============================================================================
package ch01.home;
import java.util.Scanner;
public class home0104 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n1, n2, result=0;
char opt;
while(true)
{
System.out.print("input number1 operator number2(input number1 0 EXIT): ");
n1 = sc.nextInt();
opt = sc.next().charAt(0); //charAt(n) : n번째 문자를 읽어온다.
n2 = sc.nextInt();
if(n1 == 0)
break;
switch(opt){
case '+':
result = n1+n2;
break;
case '-':
result = n1-n2;
break;
case '*':
result = n1*n2;
break;
case '/':
result = n1/n2;
break;
case '%':
result = n1%n2;
break;
default:
System.out.println("inputt error!");
}
System.out.printf("%d %c %d = %d\n",n1,opt,n2,result);
}
}
}
실행 결과
----------------------------------------------------------
input number1 operator number2(input number1 0 EXIT): 1 + 2
1 + 2 = 3
input number1 operator number2(input number1 0 EXIT): 1 * 2
1 * 2 = 2
input number1 operator number2(input number1 0 EXIT): 0 + 0
----------------------------------------------------------
'예전 포스팅 모음' 카테고리의 다른 글
[C++] 생성자와 소멸자 (0) | 2014.08.04 |
---|---|
[java] 객체지향 프로그래밍I 정리(클래스~초기화) (0) | 2014.08.01 |
[C++] 클래스 (0) | 2014.07.31 |
[C++] new&delete / 구조체 (0) | 2014.07.31 |
[C++] 참조자(Reference) (0) | 2014.07.30 |