1

架空の魚の餌付けモデル用の単純なコンソール ベースの入出力システム。ユーザーからの入力を取得し、関連情報の概要を示す 2 次元配列を作成しています。

私の方法の1つ、つまりこれに問題があります:

    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;
}

}

編集:メソッドスコープ外の同じ構文にはエラーがなく、メソッド内でのみ発生するため、混乱しています。これは状況的なエラーです。検索のポイントは理解しています。

4

0 に答える 0