好的,大家好,我对 java 编程很陌生,我真的遇到了数组问题。我的程序应该读取每行包含 3 个数字的 .txt 文件(这是关于卡路里的问题,第一个数字表示早餐,第二个表示午餐,第三个表示晚餐)
所以我创建了一个 Array.list(卡路里),因为它会从长度未知的文件中读取。到目前为止,它现在工作了,我将值放入一个数组中,但我想将该数组拆分为三个一维数组。早餐值的数组,午餐的另一个值和晚餐的最后一个值。
我的问题是我无法弄清楚如何划分主数组的长度以将大小分配给我的其他 3 个不同数组中的每一个。(我尝试了类似 array.length / 3 的方法,但它给了我一个 IndexOutOfBounds 错误)我知道它非常混乱和一切 :( 但我几乎不明白这一点,如果你至少能给我一个想法,我将非常感激!
import java.util.*;
import java.util.ArrayList;
import java.io.*;
public class lab {
public static void main(String[] args) {
readData("ARRAYLAB1.txt"); //read file arraylab1.txt
}
static void readData(String filename) {
try {
List<Integer> calories = new ArrayList<Integer>();
// Defining an integer Array List
Scanner myfile = new Scanner(new FileReader("ARRAYLAB1.txt"));
// Reading file using Scanner
while (myfile.hasNext()) {
calories.add(myfile.nextInt()); // Read file content using a while loop
}
int[] array = new int[calories.size()]; //Pass the array list to an array
for(int i = 0; i < calories.size(); i++)
array[i] = calories.get(i);
int size = array.length / 3; //This didn't work
int[] breakfast = new int[size]; <--- index out of bounds error
int[] lunch = new int[size];
int[] dinner = new int[size];
//the rest just assigns each value to their respective array
int counter = 1;
int j = 0;
int k = 0;
int x = 0;
for (int i = 0; i < array.length; i++) {
if (counter == 1) {
breakfast[j] = array[i];
counter++;
j++;
continue;
}
if (counter == 2) {
lunch[k] = array[i];
counter++;
k++;
continue;
}
if (counter == 3) {
dinner[x] = array[i];
counter = 1;
x++;
continue;
}
}
myfile.close(); // close the file
} catch (Exception e) { // Defined it just in the case of error
e.printStackTrace();
}
}
}