1 10
2 12
3 13
等...
每个人被一个空格分开。我已经得到了这么远,我甚至得到它为对象中的变量分配正确的数字。我的事情是它继续覆盖数组,并不会用文本文件中的数据填充其余部分。我认为如果打印出阵列,它应该打印出文本文件。 感谢您对此的任何帮助
public static void main(String[] args) {
Process [] pArray;
//just need to have 10 Process
pArray = new Process [10];
//delimiter to parse string
String delimiter = " ";
String[] tokens;
tokens = new String [10];
/*
* save this for input handeling
Scanner input = new Scanner( System.in );
System.out.println("Enter the Text file for data set");
String fileDestination = input.next();
* */
//get data from the file
File file = new File("C:/Users/Kenshin/Desktop/TestData.txt");
FileInputStream fis = null;
BufferedInputStream bis = null;
DataInputStream dis = null;
try {
fis = new FileInputStream(file);
// Here BufferedInputStream is added for fast reading.
bis = new BufferedInputStream(fis);
dis = new DataInputStream(bis);
// dis.available() returns 0 if the file does not have more lines.
while (dis.available() != 0) {
// this statement reads the line from the file and print it to
// the console.
int g = 0;
//System.out.println(dis.readLine());
tokens = dis.readLine().split(delimiter);
int aInt = Integer.parseInt(tokens[0]);
int bInt = Integer.parseInt(tokens[1]);
for( int i = 0; i < tokens.length; i ++)
{
//int aInt = Integer.parseInt(tokens[i]);
pArray[g] = new Process(aInt, bInt);
}
g++;
}
// dispose all the resources after using them.
fis.close();
bis.close();
dis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
for(int i = 0; i < pArray.length; i ++)
{
System.out.print(pArray[i].arrivalTime + " ");
System.out.println(pArray[i].burstTime);
}
}
答案 0 :(得分:5)
你不需要这样做吗
int g = 0;
外面你的循环?否则,您将不断重写数组中的初始值,而不是提升值(填充数组的其余部分)。
为了使这更简单,我会填充ArrayList<Process>
或其他类似的集合而不是固定长度的数组。
答案 1 :(得分:2)
有两个问题:首先,您不需要每次都重新注入g
。其次,您的内部for
循环不执行任何操作(使用i
的唯一行被注释掉)。请尝试以下方法:
int g = 0;
while (dis.available() != 0) {
tokens = dis.readLine().split(delimiter);
int aInt = Integer.parseInt(tokens[0]);
int bInt = Integer.parseInt(tokens[1]);
pArray[g++] = new Process(aInt, bInt);
}
答案 2 :(得分:0)
首先:你在while循环的每次迭代中重新启动g
;其次:你必须在for循环中增加g
或使用另一个变量作为pArray
的索引。否则,它将在for循环的每次迭代中保持在索引0处覆盖值。
int g = 0;
while (dis.available() != 0) {
// this statement reads the line from the file and print it to
// the console.
//System.out.println(dis.readLine());
tokens = dis.readLine().split(delimiter);
int aInt = Integer.parseInt(tokens[0]);
int bInt = Integer.parseInt(tokens[1]);
for( int i = 0; i < tokens.length; i ++) {
//int aInt = Integer.parseInt(tokens[i]);
pArray[g] = new Process(aInt, bInt);
g++;
}
}