Пожалуйста, смотрите мой предыдущий вопрос для дальнейшего объяснения того, что программа должна делать.Так что вы, ребята, не должны читать плохо, а также добавить соответствующие материалы здесь.Вопрос будет внизу.
текстовый файл java для разбора и обработка каждой строки по-разному
Формат текстовых файлов следующий:
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();
}
}
Мой вопрос: я попытался взять выходные данные метода, проанализировать целые числа и затем заменить первые два целых числа в текстовом файле.Для второй итерации цикла три целых числа, которые должен принять метод, - это два целых числа, возвращаемые из первого вызова метода, а затем целое число в 3-й строке текстового файла и т. Д.Третья итерация основного цикла while должна принимать два целых числа, возвращенных из второй итерации метода, и 4-ю строку текстового файла.
следующий код заменяет значения в массиве aliveSoldiers, но, похоже, не вводит обратно в метод.
aliveSoldiers[0] = newResults[0];
aliveSoldiers[1] = newResults[1];