首页 > 解决方案 > 为什么我的 java 代码一开始就这么早就结束了?

问题描述

我试图通过分隔数组并在最后打印来接收 5 个产品价格和 5 个产品名称,所以我纠正错误直到出现此错误:线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 5 at javaapplication3.JavaApplication3.main( JavaApplication3.java:23)

这就是我的最终老板(抱歉这个帖子被关闭了)

package javaapplication3;

import java.util.Scanner;

public class JavaApplication3 {


   public static void main(String[] args) {

       Scanner read = new Scanner(System.in);
       double n [] = new double [5];
       String name[] = new String[5];
       double media;    
       int contar=0;
        for(int counter=0; counter<=n.length; counter++)
        {
           System.out.println("Type the product "+counter+ " price");
          n[counter] = read.nextDouble();
         
       }
         
        for(int i =0; i<=name.length;i++)
        {
           System.out.println("Type the product "+n[i]+" name");
           name[i] = read.nextLine();
       }
       while(contar<=5)
       {
           System.out.println(n[contar]);
           if(n[contar]<=50)
           {
               System.out.println("The "+name[contar]+" costs" +n[contar]);
           }
           media = n [contar]/5;
           contar++;

       }
       
       
       
       
   }
}

标签: javaarrays

解决方案


我不知道您要做什么,但是在第二个和第三个循环中您没有更新计数器变量,因此它将导致无限循环。

在第二个循环中,您正在递增计数器,但控制循环的变量是 i,在第三个循环中,您也在递增计数器,但变量名称是 contar。

你的第二个和第三个循环应该看起来像

while (i<=6)
       {
           System.out.println("Type the product "+n[i]+" name");
           name[i] = read.nextLine();
           i++;
       }
while(contar<=6)
       {
           System.out.println(n[contar]);
           if(n[contar]<=50)
           {
               System.out.println("The "+name[contar]+" costs" +n[contar]);
           }
           media = n [contar]/5;
           contar++;
       }

推荐阅读