Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 循环中没有这样的元素异常_Java - Fatal编程技术网

Java 循环中没有这样的元素异常

Java 循环中没有这样的元素异常,java,Java,我正在使用这段代码,出于某种原因,我得到了一个没有这样的元素异常 numCompanies正在从键盘导入,并显示在右侧,公文包是一个带有[numCompanies][4]的数组 有人知道为什么吗 for(int i = 0; i < numCompanies; i++) { System.out.print("Stock #" + (i+1) + ": "); String stockData = kbReader.nextLine(); System.out.pr

我正在使用这段代码,出于某种原因,我得到了一个没有这样的元素异常

numCompanies正在从键盘导入,并显示在右侧,公文包是一个带有[numCompanies][4]的数组

有人知道为什么吗

for(int i = 0; i < numCompanies; i++)
{
    System.out.print("Stock #" + (i+1) + ": ");
    String stockData = kbReader.nextLine();
    System.out.print("\n\n hi" + stockData);
    Scanner stockLine = new Scanner(stockData);
    for(int j = 0; j < 4; j++)
    {
        portfolio[i][j] = stockLine.next();
    }
}
for(int i=0;i
我没有测试过这个,但可能是
stockLine.next()被调用,即使没有剩余的元素。因此,这可能会有所帮助:

for(int j = 0; j < 4; j++)
{
    if( stockLine.hasNext() ) {
        portfolio[i][j] = stockLine.next();
    }
    else
    {
        portfolio[i][j] = 0; // or whatever you want it to be by default
    }
}
for(int j=0;j<4;j++)
{
if(stockLine.hasNext()){
投资组合[i][j]=stockLine.next();
}
其他的
{
公文包[i][j]=0;//或默认情况下希望它是什么
}
}

这将解决错误消息,但不会解决故障。

您正在将单个字符串传递给
扫描仪
对象,但我认为有更好的方法

如果您只想读入字符串中每个值的输入,并用空格分隔,请使用
split()


看起来
stockData
并不总是有4个子字符串被空格隔开。是的,出于某种原因,nextLine总是跳过stock#1,我创建了另一个Scanner对象,它解决了您应该使用
hasNext()
的问题,没有捕获执行
String stockData = kbReader.nextLine();
String[] data = stockData.split(" ");
if (data.length != 4) {
    System.err.println("Bad data value found!");
} else {
    //run your loop
}