2014-03-06 151 views
0

我想獲得5個數字的用戶輸入,然後通過拆分字符串將該輸入更改爲整數。但我繼續得到這樣的錯誤:線程「main」中的異常java.lang.NumberFormatException:對於輸入字符串:「」。有關如何修復它的任何線索?IO掃描器Java

public class Exercise{ 
public static void main(String [] args){ 

    Scanner scan = new Scanner(System.in); 
    System.out.println("Input Quizzes: "); 
    Scanner scan = new Scanner(System.in); 
    String quiz = scan.nextLine(); 
    String [] part = quiz.split(" "); 
     int pq1 = Integer.parseInt(part[0]); 
     int pq2 = Integer.parseInt(part[1]); 
    System.out.println("Input Additionals: "); 
    String quiz1 = scan.nextLine(); 
    String [] part1 = quiz1.split(" "); 
     int pqa1 = Integer.parseInt(part1[0]); 
     int pqa2 = Integer.parseInt(part1[1]); 
    System.out.println("Input Recitation: "); 
     int recitation = scan.nextInt(); 
    System.out.println("Input Seatworks: "); 
     int swhw1 = scan.nextInt(); 
    System.out.println("Input Exercises "); 
    String exp = scan.nextLine(); 
    String [] part2 = exp.split(" "); 
      int ex1 = Integer.parseInt(part2[0]), 
       ex2 = Integer.parseInt(part2[1]), 
       ex3 = Integer.parseInt(part2[2]), 
       ex4 = Integer.parseInt(part2[3]), 
       ex5 = Integer.parseInt(part2[4]); 
    } 
} 
+0

你怎麼輸入數字? '1 2 3 4 5'然後按Enter?你的代碼對我來說工作得很好。 – nikis

+0

不知道它是什麼輸入,但你有修剪你的字符串?使用trim()方法。 –

回答

0

的問題可能會在2種情況:

  1. 字符串包含其他字符,他們沒有數字

  2. 你有數字之間一個以上的空間,因此,你 得到拆分陣列中多於5個單元(這些單元包含空字符串「」)

所以..加入這一行拆分命令前:

exp = exp.trim().replaceAll(" +", " ");

這將解決這個問題!和try&catch還建議

這是全碼:

public static void main(String [] args){ 
Scanner scan = new Scanner(System.in); 
System.out.println("Input Exercises "); 
String exp = scan.nextLine(); 
exp = exp.trim().replaceAll(" +", " "); 
String [] part2 = exp.split(" "); 
     int ex1 = Integer.parseInt(part2[0]), 
      ex2 = Integer.parseInt(part2[1]), 
      ex3 = Integer.parseInt(part2[2]), 
      ex4 = Integer.parseInt(part2[3]), 
      ex5 = Integer.parseInt(part2[4]); 
} 
0

這是因爲它使用了nextInt。

我推薦先使用nextLine()來讀取整行,然後使用Integer.parseInt()方法來驗證整數輸入。

像這樣:

Scanner scan = new Scanner(System.in); String s = scan.nextLine(); 

try{ 
    Integer.parseInt(s); } catch(NumberFormatException ex){ 
    System.out.println("Its not a valid Integer"); } 

或者你可以把掃描儀前,下一條線(這是不推薦)

public static void main(String [] args){ 

    Scanner scan = new Scanner(System.in); 
    System.out.println("Input Quizzes: "); 
    scan = new Scanner(System.in); 
    String quiz = scan.nextLine(); 
    String [] part = quiz.split(" "); 
     int pq1 = Integer.parseInt(part[0]); 
     int pq2 = Integer.parseInt(part[1]); 
    System.out.println("Input Additionals: "); 
    String quiz1 = scan.nextLine(); 
    String [] part1 = quiz1.split(" "); 
     int pqa1 = Integer.parseInt(part1[0]); 
     int pqa2 = Integer.parseInt(part1[1]); 
    System.out.println("Input Recitation: "); 
     int recitation = scan.nextInt(); 
    System.out.println("Input Seatworks: "); 
     int swhw1 = scan.nextInt(); 
     scan.nextLine(); 
    System.out.println("Input Exercises "); 
    String exp = scan.nextLine(); 
    String [] part2 = exp.split(" "); 
      int ex1 = Integer.parseInt(part2[0]), 
       ex2 = Integer.parseInt(part2[1]), 
       ex3 = Integer.parseInt(part2[2]), 
       ex4 = Integer.parseInt(part2[3]), 
       ex5 = Integer.parseInt(part2[4]); 
    }