[java] 단순 계산식 계산하기(Scanner, nextInt(), next().charAt())

========================================================

문) 피연산자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 from 0 to length() - 1. The first char value of the sequence is at index 0, the next at index 1, 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