Java数组从数组输入中获取数字并生成数字 import java.util.Scanner; 公共级焦油{ 静态扫描仪输入=新扫描仪(系统输入); 公共静态void main(字符串[]args){ int d,i=0,a=0,f=1; System.out.println(“输入所需的位数?”); d=in.nextInt(); int num[]=新的int[d]; 对于(i=0;i0;i--){ a=a+(num[i]*f); f=f*10; } System.out.println(“编号为:“+a”); } }

Java数组从数组输入中获取数字并生成数字 import java.util.Scanner; 公共级焦油{ 静态扫描仪输入=新扫描仪(系统输入); 公共静态void main(字符串[]args){ int d,i=0,a=0,f=1; System.out.println(“输入所需的位数?”); d=in.nextInt(); int num[]=新的int[d]; 对于(i=0;i0;i--){ a=a+(num[i]*f); f=f*10; } System.out.println(“编号为:“+a”); } },java,arrays,indexoutofboundsexception,digits,Java,Arrays,Indexoutofboundsexception,Digits,问题:用户将输入数字,程序将从中生成一个数字。我自己编写了代码,但似乎不起作用 运行程序时: 输入似乎工作正常。我已经试着测试了 数组中没有第二个循环与计算,似乎可以工作 但随着计算的进行,它似乎崩溃了: 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:4 位于tar0.main(tar0.java:17) 怎么回事?Java数组从0开始,然后继续从0开始。按照目前代码的格式化方式,您正在丢失一个值,因此数组太小,无法容纳这些值。 如上所

问题:用户将输入数字,程序将从中生成一个数字。我自己编写了代码,但似乎不起作用

运行程序时:

  • 输入似乎工作正常。我已经试着测试了
  • 数组中没有第二个循环与计算,似乎可以工作 但随着计算的进行,它似乎崩溃了:

    线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:4 位于tar0.main(tar0.java:17)


  • 怎么回事?

    Java数组从0开始,然后继续从0开始。按照目前代码的格式化方式,您正在丢失一个值,因此数组太小,无法容纳这些值。 如上所述的一个选项是减小d值,以便在循环中使用适当的数组大小。这将是首选的方式,因此我删除了上面为另一个选项添加的代码

    import java.util.Scanner;
    public class Tar0 {
        static Scanner in = new Scanner (System.in);
        public static void main(String[] args) {
            int d, i = 0, a = 0, f = 1;
            System.out.println("Enter How many Digits you want?");
            d = in.nextInt();
            int num[] = new int[d];
            for(i = 0; i < d; i++) {
                System.out.println("Enter Single Digit");
                num[i] = in.nextInt();
            }
            for(i = d; i > 0; i--) {
                a = a + (num[i] * f);
                f = f * 10;
            }
            System.out.println("The Number is: " + a);
        }
    }
    
    import java.util.Scanner;
    公共级焦油{
    静态扫描仪输入=新扫描仪(系统输入);
    公共静态void main(字符串[]args)
    {
    int d,i=0,a=0,f=1;
    System.out.println(“输入所需的位数?”);
    d=in.nextInt();
    int num[]=新的int[d];
    对于(i=0;i0;i--)
    {
    a=a+(num[i]*f);
    f=f*10;
    }
    System.out.println(“编号为:“+a”);
    }
    
    如果您修改了以下代码,它将正常工作

    import java.util.Scanner;
    public class tar0 {
    static Scanner in = new Scanner (System.in);
    public static void main(String[] args)
    {
        int d,i=0,a=0,f=1;
        System.out.println("Enter How many Digits you want?");
        d=in.nextInt();
        int num[] = new int[d];
        for(i=0;i<d;i++)
        {
            System.out.println("Enter Single Digit");
            num[i]=in.nextInt();
        }
        for(i =  d - 1; i >0 ; i--)
        {
            a=a+(num[i]*f);
            f=f*10;
    
        }
        System.out.println("The Number is: "+a);
     }
    

    数组索引值将从0开始。因此,将数组从num[i]更改为num[i-1]

    Java使用基于0的索引。有效索引为0..(d-1)。请在将代码发布到此处之前尝试正确格式化代码(实际上,只要始终正确格式化代码,这将提高可读性,更容易发现错误或理解代码的功能)。此外,请尝试遵循命名约定(例如:类名应以大写字母开头,变量应以小写字母开头)。非常感谢!:)
    for(i=d;i>0;i--)
    {
        a=a+(num[i-1]*f);
        f=f*10;
    
    }