请参阅我之前的问题,以获得有关该计划应该做什么的进一步说明。所以你们不必回读病了也在这里添加相关的东西。问题将在底部。
java parsing text file and handling each line differently
文本文件的格式如下:
200 345
36
和
200 345
36
45
36
21
该程序的第一部分处理文件的输入。它接受第一行,解析整数,然后将整数保存在数组中。
public class costOfConflictTest
{
public static void costOfConflictTest() throws FileNotFoundException
{
System.out.print('\u000c');
System.out.println("please enter the name of the text file you wish you import. Choose either costs.txt or lotsacosts.txt Nothing else");
Scanner keyboard = new Scanner(System.in);
String filename = keyboard.nextLine();
File file = new File(filename);
System.out.println("You have loaded file: \t\t\t" + filename);
BufferedReader in = new BufferedReader(new FileReader(file));
String element1 = null;
try {
element1 = in.readLine();
}catch (Exception e) {
// handle exception
}
String[] firstLine = element1.split(" ");
Arrays.stream(firstLine).forEach(fl ->
{
System.out.println("First line element: \t\t\t" + fl);
});
int[] results = new int[100];
String errorMessage = "that's a wrap!";
for (int i = 0; i < firstLine.length; i++)
{
try {
int stuff = Integer.parseInt(firstLine[i]);
results[i] = stuff;
}
catch (NumberFormatException nfe) {
System.out.println(results);
System.out.println(errorMessage);
}
}
第二部分: 这部分是阅读最新情况的一个小技巧。它需要剩余的行,将整数解析为一个数组aliveSoldiers。它接受第一行的两个整数和第二行的第一个整数,并将它们放入一个返回两个整数字符串的方法中。解析此字符串,输出应该是aliveSoldiers数组中的前两个值,因此可以再次调用该方法。
// parsing remaining days
String otherElement = null;
try {
while ((otherElement = in.readLine()) != null) {
System.out.println("Line to process:\t\t\t" + otherElement);
String[] arr = otherElement.split(" ");
int [] things = new int [100];
for (int k = 0; k <arr.length; k++)
{
try {
int thingsResult = Integer.parseInt(arr[k]);
things[k] = thingsResult;
System.out.println("number of days: \t\t\t"+things[k]);
int[] aliveSoldiers = new int[100];
aliveSoldiers[0] = results[0];
aliveSoldiers[1] = results[1];
aliveSoldiers[2] = things[k];
String returnAliveSoliders = myCalculations(aliveSoldiers[0], aliveSoldiers[1], aliveSoldiers[2]);
System.out.println(returnAliveSoliders);
String[] newItems = returnAliveSoliders.split(" ");
int[] newResults = new int[100];
for (int f = 0; f < newItems.length; f++)
{
try {
int newParse = Integer.parseInt(newItems[f]);
newResults[f] = newParse;
}
catch (NumberFormatException nfe) {
System.out.println(results);
System.out.println(errorMessage);
}
}
aliveSoldiers[0] = newResults[0];
aliveSoldiers[1] = newResults[1];
System.out.println(aliveSoldiers[0]);
System.out.println(aliveSoldiers[1]);
}
catch (NumberFormatException nfe) {
System.out.println(results);
System.out.println(errorMessage);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
我的问题:我试图从方法中获取输出,解析整数,然后替换文本文件中前两个整数。对于循环的第二次迭代,方法应该采用的三个整数是从方法的第一次调用返回的两个整数,然后是文本文件的第三行上的整数,依此类推。 主while循环的第三次迭代应该采用从方法的第二次迭代返回的两个整数,以及文本文件的第四行。
以下代码替换了数组aliveSoldiers中的值,但似乎没有输回到方法中。
aliveSoldiers[0] = newResults[0];
aliveSoldiers[1] = newResults[1];