Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的数组索引越界错误 包测试1; 导入java.util.Scanner; 公开课问题2{ 公共静态void main(字符串[]args){ 扫描仪输入=新扫描仪(System.in); 火车车厢; int最大权重; 整数计数=0; int-total=0; maxweight=input.nextInt(); traincars=input.nextInt(); int[]列车=新int[列车车厢]; 对于(int i=0;i_Java_Arrays_Eclipse - Fatal编程技术网

Java中的数组索引越界错误 包测试1; 导入java.util.Scanner; 公开课问题2{ 公共静态void main(字符串[]args){ 扫描仪输入=新扫描仪(System.in); 火车车厢; int最大权重; 整数计数=0; int-total=0; maxweight=input.nextInt(); traincars=input.nextInt(); int[]列车=新int[列车车厢]; 对于(int i=0;i

Java中的数组索引越界错误 包测试1; 导入java.util.Scanner; 公开课问题2{ 公共静态void main(字符串[]args){ 扫描仪输入=新扫描仪(System.in); 火车车厢; int最大权重; 整数计数=0; int-total=0; maxweight=input.nextInt(); traincars=input.nextInt(); int[]列车=新int[列车车厢]; 对于(int i=0;i,java,arrays,eclipse,Java,Arrays,Eclipse,这是一个非常简单的程序,但由于某些原因,火车车厢的数组超出了范围 为什么会发生这种情况?在 package test1; import java.util.Scanner; public class Question2 { public static void main(String[] args) { Scanner input = new Scanner(System.in); int traincars; int maxwei

这是一个非常简单的程序,但由于某些原因,火车车厢的数组超出了范围


为什么会发生这种情况?

package test1;

import java.util.Scanner;

public class Question2 {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        int traincars;
        int maxweight;
        int count = 0;
        int total = 0;

        maxweight = input.nextInt();
        traincars = input.nextInt();
        int[] trains = new int[traincars];

        for(int i = 0; i < traincars; i++)
        {
            trains[i] = input.nextInt();
        }

        if (total < maxweight)
        {
            for(int i = 0; i < traincars; i++)
            {
                total = trains[i] + trains[i+1] + trains[i+2] + trains[i+3];
                count++;
            }
        }else
        {
            count = count + 3;
        }
System.out.println("count");
    }
}
问题在于:

        for(int i = 0; i < traincars; i++)
        {
            total += trains[i]; //unless of course you need something else...
            count++;
        }

你能发布错误输出吗?嗯,哪一行得到了错误?如果不能以其他方式将其隔离,请将trains+trains+trains语句分解为多个子语句,这样每行只发生一个数组索引操作。(但原因很明显——如果i==traincars-1,那么i+3将是traincars+2,超出数组的范围。)谢谢!我意识到了这一点,并设法解决了它。谢谢你的帮助。
        for(int i = 0; i < traincars; i++)
        {
            total += trains[i]; //unless of course you need something else...
            count++;
        }
        for(int i = 0; i < traincars; i++)
        {
            total = trains[i] + trains[i+1] + trains[i+2] + trains[i+3];
            count++;
        }
for(int i = 0; i < traincars - 3; i++) {...}