Java 如何将数组划分为三个不同的部分?

Java 如何将数组划分为三个不同的部分?,java,arrays,Java,Arrays,好的,大家好,我对java编程很陌生,而且我在数组方面遇到了很多麻烦。我的程序应该读取一个.txt文件,每行包含3个数字(这是关于卡路里的问题,第一个数字表示早餐,第二个是午餐,第三个是晚餐) 因此,我创建了一个Array.list(carries),因为它将以未知长度读取文件。到目前为止,它工作了,现在我将值放入一个数组中,但我想将这个数组拆分为三个一维数组。早餐值数组,午餐值数组,晚餐值数组 我的问题是我不知道如何划分主数组的长度,以便将大小分配给其他3个不同的数组。(我尝试了array.l

好的,大家好,我对java编程很陌生,而且我在数组方面遇到了很多麻烦。我的程序应该读取一个.txt文件,每行包含3个数字(这是关于卡路里的问题,第一个数字表示早餐,第二个是午餐,第三个是晚餐)

因此,我创建了一个Array.list(carries),因为它将以未知长度读取文件。到目前为止,它工作了,现在我将值放入一个数组中,但我想将这个数组拆分为三个一维数组。早餐值数组,午餐值数组,晚餐值数组

我的问题是我不知道如何划分主数组的长度,以便将大小分配给其他3个不同的数组。(我尝试了array.length/3之类的东西,但它给了我一个IndexOutOfBounds错误)我知道它非常混乱,而且一切都很糟糕:(但我几乎不明白这一点,如果你能给我至少一个想法,我将非常感激

import java.util.*;
导入java.util.ArrayList;
导入java.io.*;
公共班级实验室{
公共静态void main(字符串[]args){
readData(“ARRAYLAB1.txt”);//读取文件ARRAYLAB1.txt
}
静态void readData(字符串文件名){
试一试{
列表卡路里=新的ArrayList();
//定义整数数组列表
Scanner myfile=new Scanner(新文件读取器(“ARRAYLAB1.txt”);
//使用扫描仪读取文件
而(myfile.hasNext()){
carries.add(myfile.nextInt());//使用while循环读取文件内容
} 
int[]array=new int[carries.size()];//将数组列表传递给数组
对于(int i=0;iint[]早餐=新int[尺码];size必须是一个int值。当您获取索引越界异常时,只需在“监视”窗口中添加size变量,以验证您确实有一个整数值。最好将size值舍入为整数,因为当它不是3的倍数时,除以3不会得到整数值。您可以将其转换为整数还有


如果长度值是3的倍数,那么代码应该可以正常工作。

这一点非常准确。如果没有三的精确倍数,则在将值分配给(早餐/午餐/晚餐)数组时,实际上会发生索引越界。为了避免这种情况,可以使用称为数组列表的动态大小数组(就像你用来计算卡路里)并避免被3除的问题

然后,代码变为:

List<Integer> calories = new ArrayList<Integer>();  

Scanner myfile = new Scanner(new FileReader("ARRAYLAB1.txt")); 

while (myfile.hasNext()) {     
    calories.add(myfile.nextInt());   // Read file content using a while loop
} 

List<Integer> breakfast = new ArrayList<Integer>();
List<Integer> lunch = new ArrayList<Integer>();
List<Integer> dinner = new ArrayList<Integer>();

//the rest just assigns each value to their respective array 
int counter = 1;
for (int i = 0; i < calories.size(i); i++) {
    if (counter == 1) {
        breakfast.add(calories.get(i)); 
        counter++;
        continue;
    }
    if (counter == 2) {
        lunch.add(calories.get(i)); 
        counter++;
        continue;
    }
    if (counter == 3) {
        dinner.add(calories.get(i)); 
        counter = 1; 
        continue;
    }
}
List carries=new ArrayList();
Scanner myfile=new Scanner(新文件读取器(“ARRAYLAB1.txt”);
而(myfile.hasNext()){
carries.add(myfile.nextInt());//使用while循环读取文件内容
} 
列表早餐=新的ArrayList();
列表午餐=新的ArrayList();
列表晚餐=新的ArrayList();
//其余的只将每个值分配给各自的数组
int计数器=1;
对于(int i=0;i
如果在发生越界错误之前执行System.out.println(size)操作,会得到什么?这是一件奇怪的事情,我实际上得到了大小,而且如果我执行carries.size()/3.Idk,为什么在将大小提供给其他数组时会出现错误。您可以尝试
int size=(int)(array.length/3)吗
然后看看它是否变得更好!!我刚刚测试了你的代码,它成功运行了。你能列出你的java版本和错误日志吗。你如何在数组初始化中获得ArrayIndexOutOfBoundsException?是的,会的,一个int除以一个int得到另一个int。很抱歉格式/对齐不好。我还是比较新的答案我从这个网站上得到了很多东西,我想我应该开始回馈……”“很抱歉格式/对齐不好”只要你回去尝试修改格式,而不是让格式变差,别担心。@MattQuinlan是的!!这很有效哦,上帝,谢谢你!如果我能给你买个蛋糕,我会:D!thaaank youuu:D@DennisMeng我试着修复它。我认为现在看起来还可以。我猜将代码复制到您自己的IDE中,在那里编辑,然后粘贴b是最简单的阿克?