2015-11-03 145 views
0

當前我得到java.lang.NumberFormatException:錯誤。我無法修復它。解決java.lang.NumberFormatException:錯誤

這裏是我當前的代碼:

import java.util.*; 
import java.lang.*; 
/** 
    * Write a description of class Square here. 
    * 
    * @author (your name) 
    * @version (a version number or a date) 
*/ 
public class Square { 

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

    String n = firstInput.next(); 
    n = n.replaceAll("[*0-9]",""); 
    int b = Integer.parseInt(n); 


    int[] squares = new int[b]; 
    int[] squared = new int[b]; 

    for(int i = 0; i <= squares.length - 1; i++) { 
     System.out.print("Write square number " + (i + 1) + " : "); 
     squares[i] = secondInput.nextInt(); 
    } 

    for(int j = 0; j <= squares.length - 1; j++) { 
     squared[j] = squares[j] * squares[j]; 
    } 

    System.out.print("The square of inputted numbers are: "); 

    for(int k = 0; k <= squared.length - 1; k++) { 
     System.out.print(squared[k] + " "); 
    }  
    } 
} 

這裏是我得到的錯誤:

java.lang.NumberFormatException: For input string: "java" 
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
    at java.lang.Integer.parseInt(Integer.java:580) 
    at java.lang.Integer.parseInt(Integer.java:615) 
    at Square.main(Square.java:17) 

本質上,將用戶輸入的「Java廣場5」爲例,它將檢測值5,將數組的大小設置爲5,然後向該人詢問他/她想要平方的5個數字。

以上規定的工作只有整數,但是當我放入一個字符串時,它停止工作。

任何幫助,將不勝感激!

注:我知道我的代碼可能是蹩腳的,我還在學習!

+0

考慮減少你的問題到一個[mcve](http://stackoverflow.com/help/mcve),你可能會自己回答你的問題。使用[文檔](http://docs.oracle.com/javase/7/docs/api/)找出爲什麼'Scanner.nextInt()'拋出'NumberFormatException' – BeyelerStudios

+0

嗨,謝謝你的迴應,我一直在查看文檔,但我無法理解它。 –

回答

0

你應該只有一個掃描儀。兩臺掃描儀正在相互競爭從System.in中讀取。然後,您需要掃描兩次以獲取令牌「java」和「square」。然後,您可以開始循環以獲取.nextInt()。

Scanner input = new Scanner(System.in); 
input.next(); // should be "java" 
input.next(); // should be "square" 
input.nextInt(); // should be 5 
+0

這確實有道理,但是你可能會從你說的「你需要掃描兩次以獲得令牌」的地方稍微弄虛作假? –

+0

我已經更新了答案。默認情況下,掃描器讀取由空格分隔的令牌。 –