2015-10-15 87 views
0
import java.util.Scanner; 

public class VerticalWire { 
    public static void main(String[] args) 
    { 
     Scanner in = new Scanner(System.in); 
     System.out.println("how many wires"); 
     String howManyWires = in.next(); 

     switch(howManyWires) { 
      case "3": 
      { 
       System.out.println("true"); 
       break; 
      } 

      case "3 5": 
      { 
       System.out.println("false");break;} 
      } 
    } 
} 

我測試過,如果輸入「3 5」,它會返回true,即使我認爲它應該返回false! 有什麼不對?爲什麼這個switch語句不起作用?

+2

你覺得呢'in.next() '是嗎?你爲什麼這麼認爲? –

+0

'in.next()'只讀取第一個數字。使用'nextLine()' – TheLostMind

+0

閱讀['Scanner#next'](https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html#next--)實際上,然後使用'掃描儀#nextLine'而不是 – MadProgrammer

回答

0

使用in.nextLine()而不是in.next()

scanner.next()文檔指出

查找並從該掃描儀返回下一個完整標記。

所以,當你進入3 5作爲輸入,它會當你調用一個方法只讀3,如果你再次調用next方法會讀5

+1

他們爲什麼要這樣做? (我知道答案,但你需要告訴OP;)) – MadProgrammer

+0

@MadProgrammer - 你不必說 - *我知道答案*。我們知道你知道:P – TheLostMind

+1

@TheLostMind人們經常誤認我爲OP;) – MadProgrammer