2014-02-14 45 views
0

我有以下代碼掃描儀無法掃描第一字符串

public static void main(String args[]){ 
    Scanner scanner = new Scanner(System.in); 
    int noOfTestCases = scanner.nextInt(); 
    String[] firstStringsList = new String[noOfTestCases]; 
    String[] secondStringsList = new String[noOfTestCases]; 
    for(int i=0;i<noOfTestCases;i++){ 
     firstStringsList[i] = scanner.nextLine(); 
     secondStringsList[i] = scanner.nextLine(); 
    } 
    for(int i=0;i<noOfTestCases;i++){ 
     System.out.println("First String : " + firstStringsList[i]); 
     System.out.println("Second String : " + secondStringsList[i]); 
    } 
} 

和輸出變爲

1 
asd 
First String : 
Second String : asd 

即我首先輸入1,這意味着我有其涉及獲得two String inputs(per test case). 1測試用例但是我只能輸入1個分配給secondStringsList[i]的字符串。我正在使用Intellij IDEA。這是爲什麼發生?解決方法?

+2

你搜索涉及的問題'nextLine()'上'Scanner'回事?這個確切的問題經常被問到。 –

+2

[在nextLine()之前使用nextInt()](http://christprogramming.wordpress.com/2014/01/30/java-common-mistakes-1/) – Christian

+1

以下是我之前準備的兩個! :-) http://stackoverflow.com/questions/20751385/setting-a-scanner-as-a-global-variable http://stackoverflow.com/questions/20181887/java-string-variable-using-next- or-nextline –

回答

0

我可能已經固定您的問題

public static void main(String args[]) { 
     Scanner scanner = new Scanner(System.in); 
     int noOfTestCases = scanner.nextInt(); 
     String[] firstStringsList = new String[noOfTestCases]; 
     String[] secondStringsList = new String[noOfTestCases]; 

     scanner.nextLine(); 


     for (int i = 0; i < noOfTestCases; i++) { 
      firstStringsList[i] = scanner.nextLine(); 
      secondStringsList[i] = scanner.nextLine(); 
     } 
     for (int i = 0; i < noOfTestCases; i++) { 
      System.out.println("First String : " + firstStringsList[i]); 
      System.out.println("Second String : " + secondStringsList[i]); 
     } 
    }