一个简单的基于控制台的输入输出系统,用于虚构的鱼类喂养模型。我正在接受用户的输入并创建一个概述相关信息的二维数组。
我对我的一种方法有疑问,即这个:
public static int Intervallength(int Intervalindex){
int Intervalsize;
Scanner Input4 = new Scanner(System.in);
System.out.print("Enter length of Interval " + Intervalindex);
Intervalsize = Input4.nextInt();
Input4.close();
return Intervalsize;
}
在控制台打印间隔长度提示后,我立即收到错误消息:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at Feedmodel.Intervallength(Feedmodel.java:56)
at Feedmodel.main(Feedmodel.java:38)
不太清楚为什么会发生此错误,因为当我提示用户提供其他信息时使用相同的语法并且没有任何问题(这是在进入循环之前)。有人有想法吗?
这是供参考的整个文件。
import java.util.Scanner;
public class Feedmodel {
public static void main(String[] args){
double Initweight;
int Initpopulation;
int Intervals;
int Intervalsize;
double Etotal;
double Edigestion;
double ERetained;
double EMaintenance;
double Efecal;
double Efood = 18.5;
double Foodweight;
double Watertemp;
double Optweight;
Scanner Input = new Scanner(System.in);
System.out.print("Enter number of intervals: ");
Intervals = Input.nextInt();
double[][] Spreadsheet = new double[Intervals][6];
Scanner Input2 = new Scanner(System.in);
System.out.print("Enter initial trout weight: ");
Initweight = Input2.nextDouble();
Scanner Input3 = new Scanner(System.in);
System.out.print("Enter initial trout population: ");
Initpopulation = Input3.nextInt();
Input.close();
Input2.close();
Input3.close();
for (int i = 0; i < Intervals; i++){
Intervalsize = Intervallength(i + 1);
Spreadsheet[i][1] = Intervalsize;
Watertemp = Temperature(i + 1);
Spreadsheet[i][2] = Watertemp;
Initpopulation = Remainingfish(Initpopulation);
Spreadsheet[i][3] = Initpopulation;
Optweight = Fishweight(Initweight, Intervalsize, Watertemp);
Spreadsheet[i][4] = Optweight;
// Spreadsheet[i][5] = Feedkg();
}
}
public static int Intervallength(int Intervalindex){
int Intervalsize;
Scanner Input4 = new Scanner(System.in);
System.out.print("Enter length of Interval " + Intervalindex);
Intervalsize = Input4.nextInt();
Input4.close();
return Intervalsize;
}
public static double Temperature(int Intervalindex){
double Watertemp;
Scanner Input5 = new Scanner(System.in);
System.out.print("Enter water temperature of Interval " + Intervalindex);
Watertemp = Input5.nextDouble();
Input5.close();
return Watertemp;
}
public static int Remainingfish(int Initpopulation){
Initpopulation = (int)(Initpopulation * 0.978);
return Initpopulation;
}
public static double Fishweight(double Initweight, int Intervalsize, double Temperature){
int Fishweight;
double TGC = 0.191;
Fishweight = (int)(Math.pow((Math.cbrt(Initweight) + (TGC * Intervalsize * Temperature / 100)), 3));
return Fishweight;
}
}
编辑:我很困惑,因为在方法范围之外的相同语法中没有错误,只发生在方法内部。这是一个情境错误,我理解搜索的重点。