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开始。按照目前代码的格式化方式,您正在丢失一个值,因此数组太小,无法容纳这些值。 如上所
怎么回事?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;
}