2013-10-27 2 views
0

문제는 7 번째 절에서 발생합니다. 그것은 내가 한 상태에서 읽는 대신에 else 문을 출력합니다.코드 건너 뛰기

import java.util.Scanner; 

public class ifElseStatements 
{ 
    public static Scanner in = new Scanner (System.in); 

    public static void main (String[] args) 
    { 
     one(); 
     two(); 
     three(); 
     four(); 
     five(); 
     six(); 
     seven(); 
     eight(); 
    } 
    public static void one() 
    { 
    System.out.print("grade: "); 
    int number = in.nextInt(); 
    if(number > 70 && number <=100) 
    { 
     System.out.println("You're passing"); 
    } 
    else 
    { 
     System.out.println("you're not passing!"); 
    } 

    } 

    public static void two() 
    { 
     System.out.print("Number please"); 
     int b = in.nextInt(); 
     if(b <=50) 
     { 
     System.out.println("Go"); 
     } 
     else 
     { 
     System.out.println("STOP"); 
     } 
    } 

    public static void three() 
    { 
     System.out.print("Integer please >"); 
     int c = in.nextInt(); 
     if(c%2 == 0) 
     { 
     System.out.println("Even"); 
     } 
     else 
     { 
     System.out.println("odd"); 
     } 
    } 

    public static void four() 
    { 
     System.out.print("Integer please"); 
     int d = in.nextInt(); 
     if(d%5 == 0) 
     { 
     System.out.println("Multiple of 5"); 
     } 
     else 
     { 
     System.out.println("Not a multiple of 5"); 
     } 
    } 

    public static void five() 
    { 
     System.out.print("number please"); 
     int e = in.nextInt(); 
     if(e< 10) 
     { 
     System.out.println("one digit"); 
     } 
     else if(e>= 10 && e<100) 
     { 
     System.out.println("two digits"); 
     } 
     else 
     { 
     System.out.println("three digits"); 
     } 
    } 

    public static void six() 
    { 
     System.out.print("Jersey Number"); 
     int f = in.nextInt(); 
     if(f == 12 || f == 80 || f == 71) 
     { 
     System.out.println("That number is retired from the seattle seahawks"); 
     } 
     else 
     { 
     System.out.println(""); 
     } 

    } 

    public static void seven() 
    { 
     System.out.print("a state is"); 
     String g = in.nextLine(); 
     if(g .equals ("Washington") || g .equals ("Oregon") || g .equals ("Idaho")) 
     { 
     System.out.println("That state is in the PNW!"); 
     } 
     else 
     { 
     System.out.println("You should move to the PNW; Its great here!"); 
     } 
    } 

    public static void eight() 
    { 
     System.out.print("drink size (SHORT, TALL, GRANDE, VENTI)"); 
     String h = in.nextLine(); 
     if(h .equals ("SHORT")) 
     { 
     System.out.println("8"); 
     } 
     else if(h .equals ("TALL")) 
     { 
     System.out.println("12"); 
     } 
     else if(h .equals ("GRANDE")) 
     { 
     System.out.println("16"); 
     } 
     else if(h .equals ("VENTI")) 
     { 
     System.out.println("20"); 
     } 
    } 


} 

이것은 코드를 실행할 때의 모습입니다.

grade: 70 

you're not passing! 

Number please12 

Go 

Integer please >30 

Even 

Integer please15 

Multiple of 5 

number please33 

two digits 

Jersey Number12 

That number is retired from the seattle seahawks 

a state isYou should move to the PNW; Its great here! 

drink size (SHORT, TALL, GRANDE, VENTI)TALL 

12 oz 
+5

in.nextInt(); 

의 인스턴스를 교체 할 수 있습니다 당신은 8 개의 관련 코드가 아닌 수백 줄의 코드를 여기에 넣었습니까? –

답변

2

이전 단계는 다음 INT를 읽지 만 EOL 문자를 소비하지 않는, in.nextInt() 않습니다. 따라서 step7 메소드는 다음 라인을 읽고 이전 단계에서 소비되지 않은 EOL을 소비합니다.

정수가 아닌 EOL 문자를 사용하려면을 step6에 추가해야합니다.

+0

+1 OP는'12 '을'12'가 아니라''을 7()의 nextLine()으로 읽었습니다. –

+0

고마워요! 이것은 내 문제를 해결했다. – user2925747

0

이것은 항상 Scanner.nextInt()Scanner.nextLine()을 사용하여 발생하는 일반적인 문제입니다. 이는 항상 원하는대로 작동하지 않습니다. 당신은 스캐너가 어떻게 작동하는지 아이디어를 얻을 JavaDoc을 통해 이동하여 이것에 대한 설명을 찾을하지만 왜 그랬는지 일곱 번째 섹션에 있다면 간단한 수정을 위해 단지

Integer.parseInt(in.nextLine()); 
+1

'in.nextInt(); in.nextLine();'도 작동합니다. –

+0

사실,이 솔루션이 더 안전하다고 생각합니다. – kviiri

관련 문제