0

我一直在寻找这个问题的答案,但我还没有找到能够纠正这个问题的人。我正在尝试填充一个数组,但检查它是否大于某个值。但是,当我运行它时,我在线程“main”java.lang.NumberFormatException 中得到一个异常:对于输入字符串:“”错误。这是它的代码:

    public void setReadData() throws NoSuchElementException {
    try {

        for (int i = 0; i < getRows(); i++) {
            String numbers = p.nextLine();
            String[] inputs = numbers.split(" ");
            if (inputs.length > getCols()) {
                System.out.println("There are more columns than the size specified!\n");
                System.exit(1);
            }
            for (int j = 0; j < getCols(); j++) {
                int data = Integer.parseInt(inputs[j]);
                this.setData(i,j,data);
            }
        }

错误代码是:

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:504)
at java.lang.Integer.parseInt(Integer.java:527)
at foo.Bar.setReadData(Matrix.java:49)
at foo.Bar.main(Matrix.java:226)

很感谢任何形式的帮助!

- - 编辑 - -

为了澄清,有效的旧代码是:

for (int i = 0; i < getRows(); i++) {
            p.nextLine();
            for (int j = 0; j < getCols(); j++) {
                this.setData(i,j,p.nextInt()); 
            }

        }

但是,没有检查整行是否已检查。

4

4 回答 4

0

所以我最终找到了答案。我需要p.nextline()在 for 循环上方添加一个以使其正确读取下一行代码。感谢大家的帮助。非常感谢您的回答。

显然,nextline 的作用是获取当前行的剩余部分,将其输出到任何(如果有的话)与它相等的位置,然后将指针移动到下一行。这就是我遇到问题的原因。

于 2013-10-08T10:36:08.440 回答
0

尝试这个:

for (int j = 0; j < getCols(); j++) {
    if(!inputs[j].equals("")){
        int data = Integer.parseInt(inputs[j]);
        this.setData(i,j,data);
    }
}
于 2013-10-07T19:48:48.473 回答
0

如果输入的行包含两个连续的空格字符,如果元素为空白,则在空格字符上拆分会导致一个,这将解释您的错误。

要将多个空格视为一个分隔符,请执行以下操作:

String[] inputs = numbers.split(" +");

将加号添加到拆分正则表达式将消耗数字之间的任何额外空格。

于 2013-10-07T20:36:38.693 回答
0
java.lang.NumberFormatException:

当您尝试将无效字符串转换为整数或通过将空值传递给parseInt()方法时调用此异常。

  1. 无效转换
int var=Integer.parseInt("a");//throw NumberFormatException
  1. 空字符串

int var=Integer.parseInt("");//抛出 NumberFormatException

于 2013-10-07T19:56:29.743 回答