2014-07-13 1 views
0

내 코드로 이동하려고하는데 수정 방법을 모르는 오류가 발생했습니다. 코드가 옵션을 묻는 지점에 도달하면 입력 할 때 사용자가 입력 한 '문자 S'또는 '문자 T'를 인쇄하고 싶습니다. Pls는 두 가지를 염두에두고 있습니다. 1) "char getOption()"메소드를 사용해야하고 2) 나는 이것에 대해 새롭다. 내가 얻는 오류는 다음과 같습니다.getOption이 작동하지 않음, 상수 오류

미리 감사드립니다.

import java.util.Scanner; 

public class shapes { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 

     displayWelcome(); 
     displayMenu(); 
     char resp = getOption(); 
     if(resp == 'S')    
      System.out.println("This is letter S"); 

     else if(resp == 'T') 
      System.out.println("This is letter T"); 

    }  

    public static void displayWelcome() { 

     System.out.println("WELCOME TO THE SHAPE PRINTER!"); 
     System.out.println("-----------------------------"); 

    } 


    public static void displayMenu() { 

     System.out.println("Options: "); 
     System.out.println(" S)quare"); 
     System.out.println(" H) Shape"); 
     System.out.println(" T)riangle"); 
     System.out.println(" X) Shape"); 
     System.out.println(" Q)uit"); 

    } 


    public static char getOption() { 

     Scanner input = new Scanner(System.in); 

     input.nextInt(); 
     char c = input.next().charAt(0); 
      return c; 

    }  

} 스레드에서

// 예외 "주"java.util.InputMismatchException java.util.Scanner.throwFor에서 // (Scanner.java:864) 자바에서
//. util.Scanner.next (Scanner.java:1485)
// java.util.Scanner.nextInt (Scanner.java:2117)
// java.util.Scanner.nextInt (Scanner.java:2076)
// 셰이프에서 .getOption (shapes.java:60)
// 셰이프 .main (shap es.java:27)

+0

이 줄에 대한 모든 이유 input.nextInt(); ? –

+0

나는 char/Strings와 Int/Doubles의 스캐너 사이의 버퍼를 지워야한다고 들었다. – aycajr

+0

nextInt는 int 입력을 기다리고 어떤 종류의 버퍼도 지우지 않는다. 그것을 제거하려고합니다. –

답변

0

코드에서

input.nextInt(); 

의 실제 필요 없을 것 같다. 이것 때문에 코드 실행은 하나가 아닌 두 개의 사용자 입력을 요구할 것입니다. 그냥 이것을 제거하면 좋을 것입니다.

+0

대단히 감사합니다. – aycajr