Основной вопрос будет внизу.Из приведенного ниже текстового файла предположим, что первое целое число равно a, второе - b, третье - c и так далее.программа берет a, b и c, анализирует их, помещает их в метод myCalculations, который возвращает строку с двумя целыми числами.Строка анализируется, a и b заменяются целыми числами в указанной возвращаемой строке, затем следующая итерация цикла примет новые значения для a и b и целое число d.Это будет продолжаться до конца, когда a и b будут напечатаны пользователю.
Ввод из двух текстовых файлов следующий:
Формат текстового файла следующий:
200 345
36
45
36
21
Вот чтение из файла, оно работает как задумано, я поставил его здесь для контекста.tl; dr - результаты [] - целочисленный массив для первой строки.(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
}
}
Считыватель буферов читает в файле, цикл 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-модификатора) и перезаписать их в aliveSoldiers [0] иaliveSoldiers [1], поэтому программа читает следующую строку, получает новые целые числа и продолжается до тех пор, пока не останется больше дней.