主要问题将在底部。从下面的文本文件中,假设第一个整数是a,第二个是b,第三个是c,依此类推。程序使用a,b和c解析它们,将它们放入myCalculations方法中,该方法返回一个包含两个整数的字符串。解析字符串,将a和b替换为所述返回字符串中的整数,然后循环的下一次迭代将获取a和b以及整数d的新值。这将持续到a和b打印给用户的结束。
两个文本文件的输入如下:
文本文件的格式如下:
200 345
36
45
36
21
这是从文件中读取,它按预期工作,我把它放在上下文中。 tl; dr是results []是第一行的整数数组。 (int a和b)
public class conflictTrial
{
BufferedReader in;
public static void conflictTrial() 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);
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];
for (int i = 0; i < firstLine.length; i++)
{
try {
int stuff = Integer.parseInt(firstLine[i]);
results[i] = stuff;
}
catch (NumberFormatException nfe) {
// handle error
}
}
bufferreader读入文件,for循环将整数解析为数组结果[]。接下来,解析剩余的行并调用方法myCalculations:
String otherElement = null;
int[] aliveSoldiers = new int[100];
int [] things = new int [100];
int[] newResults = new int[100];
try {
while ((otherElement = in.readLine()) != null) { // main loop
System.out.println("Line to process:\t\t\t" + otherElement);
String[] arr = otherElement.split(" ");
for (int k = 0; k <arr.length; k++)
{
int thingsResult = Integer.parseInt(arr[k]);
things[k] = thingsResult;
System.out.println("number of days: \t\t\t"+things[k]);
aliveSoldiers[0] = results[0];
aliveSoldiers[1] = results[1];
String returnAliveSoliders = myCalculations(aliveSoldiers[0], aliveSoldiers[1], things[k]);
System.out.println("return soldiers alive: \t\t"+returnAliveSoliders);
String[] newItems = returnAliveSoliders.split(" ");
for (int f = 0; f < newItems.length; f++)
{
int newParse = Integer.parseInt(newItems[f]);
newResults[f] = newParse;
aliveSoldiers[0] = newResults[0];
aliveSoldiers[1] = newResults[1];
}
k++;
}
}
}
catch (Exception e) {
e.printStackTrace();
}
}
目前代码执行以下操作:主循环迭代中的第一个采用整数a,b和c,第二次迭代采用相同的整数a和b(200和345,初始值)和整数d,第三次迭代采用相同的值和a和b与整数e。我试图使用以下代码解决此问题:
aliveSoldiers[0] = newResults[0];
aliveSoldiers[1] = newResults[1];
我需要从方法myCalculations(在k-modifier循环中解析)获取整数,并将它们覆盖到aliveSoldiers [0]和aliveSoldiers [1]中,以便程序读取下一行,获取新的整数,以及继续,直到没有剩余的日子。
答案 0 :(得分:0)
老实说,我并不了解整个练习应该做什么,但由于您使用的索引,您所启用的代码可能是错误的:这些索引始终为0和1,即使通过其他索引执行循环也是如此。在第二个代码片段的末尾,f-for修改数组&#34; newResults&#34;在增加的索引&#34; f&#34;,但该数组总是在相同的索引处读取:0然后1.因此,如果&#34; f&#34;获得的价值高于&#34; 1&#34;那么&#34; aliveSoldiers&#34;的元素保持不变。
特别是,仅在前两个索引上修改aliveSoldiers,其他索引根本不使用。
您是否需要类似堆栈或类似队列的行为?