私はこのような設定ファイルを読み込む方法(// ...それらを無視、コメントしている)作成しました:「行列はジョブごとに使用するツールを表しますが、それはdoesnのStringTokenizerはNoSuchElements
5 // n jobs
2 // n tools
1 4 5 6 2
1 5 4 2 3
を本当にここで重要です。
public static JobS inputJobMatrix(){
String line = ""; // Line in tokenizer
int jobN = inputJobN(); //First number of the file (jobs) works
int toolN = inputToolN(); //Second number of the file (tools) works
//Instancing JobS object
JobS inputJobS = new JobS(jobN, toolN);
int[][] tabFill = new int[jobN][toolN];
int[] tabFillOrder = new int[jobN];
try {
// Initializing reader.
FileReader fr = new FileReader("input.txt");
BufferedReader br = new BufferedReader(fr);
StringTokenizer st = new StringTokenizer(line);
for(int i=0; i<3; i++){ //ReachFirstLine of matrix
line = br.readLine();
//System.out.println(line);
}
//Instancing tab for Job Order 1...n
int[] a = new int[jobN];
for (int i=0; i<jobN; i++){
a[i]=i+1;
}
//Filling Order tab with Job order
JobS.fillLine(tabFillOrder, a, 0); //Fills the tab with the tab a (make a copy of it we could say)
//Reading the matrix line by line and filling tab line
for(int i=0; i<jobN; i++){
for(int j=0; j<toolN; j++){
String str = st.nextToken();
System.out.println(str);
tabFill[i][j] = Integer.parseInt(str);
}
line = br.readLine();
}
inputJobS.setJobS(tabFill);
br.close();
} catch (IOException e) {
System.out.println("File not found exception in inputJobMatrix.");
}
return inputJobS;
}
になり:ここ
は方法である私は、ループ内の問題を探して試してみたが、いずれかを見つけるdidntのException in thread "main" java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(Unknown Source)
at pProgra.ReadJobS.inputJobMatrix(ReadJobS.java:84)
at pProgra.PPMain.main(PPMain.java:14)
、と私はそれ理由を理解することはできません動作しません。 ここでの目標は、bidimensionnalのint配列を入力ファイルの行列(たとえば、ジョブやツールで以前に与えたもの)で置き換え、その配列をオブジェクトに使用することです(JobS、ここではコンストラクタを与えますあまりにも)、それは助けることができる場合:
public class JobS {
private int[] jobOrder;
private int[][] jobS;
public JobS(int jobs, int tools){// Creates one more line for the title (jobOrder).
super();
int[][] tab = new int[jobs][tools];
int[] tab2 = new int[jobs];
this.jobS = tab;
this.jobOrder = tab2;
}
、私は最後に使用セッター:
public void setJobS(int[][] jobS) {
this.jobS = jobS;
}
私はコメントでできるだけコードを詳述してみました、私はあなたが私が欲しいものを理解することを願っていますする。
「複雑な」アプリケーションを作成しようとしているのは初めてのことなので、多分私はばかげて何かを忘れていましたが、今は1時間探していますが、これは..
あなたが助けてくれることを願っています!あなたは文字列を見ることができるよう LL
'StringTokenizerはをst = new StringTokenizer(line); 'その時点で' line'は値 '' "'を持ちます。要素はありません。このコード行を 'for'ループの後に移動してください。 – jlordo