Java 循环被切割为数组的一个元素
问题是: 编写一个程序,读取一个数字n,然后声明一个由n个元素组成的数组。然后程序用前n个数字填充数组,其中每个数字是前一个数字的二次幂。最后,显示数组的内容 我的代码:Java 循环被切割为数组的一个元素,java,arrays,Java,Arrays,问题是: 编写一个程序,读取一个数字n,然后声明一个由n个元素组成的数组。然后程序用前n个数字填充数组,其中每个数字是前一个数字的二次幂。最后,显示数组的内容 我的代码: import java.util.*; public class Q1 { static Scanner scan = new Scanner (System.in); public static void main(String args [] ) { int num; int i = 0;
import java.util.*;
public class Q1 {
static Scanner scan = new Scanner (System.in);
public static void main(String args [] ) {
int num;
int i = 0;
System.out.println("Enter a number :");
num = scan.nextInt();
double [] a=new double[num];
a[0]= num ;
for ( ;i<=a.length-1 ; i++) {
a[i+1] = Math.pow(2,a[i]);
System.out.println((int)(a[i]) );
}
}
}
为什么这么说?
而数字由用户打印两次
a[i+1] = Math.pow(2,a[i]); // issue here
当i=a.length-1
时,i+1
为a.length
。因此,此数组中没有索引值匹配
建议:
创建一个长度为a.length+1的数组
double powArray[] =new double[a.length+1];
现在
powdarray[0]=a[0];
对于(int i=1;i问题在第16行。根据编译器:a[i+1]=Math.pow(2,a[i]);
问题是索引在这里没有正确匹配。因此它给出了ArrayIndexOutOfBound异常。这里i=a.length-1,i+1=a.length
。因此它给出了ArrayIndexOutOfBound异常
在访问数组项之前,应检查索引是否为负数且不高于数组长度
请参考以下内容:请专注于代码的以下部分,这很简单,如果你了解了自己,你会感觉很好:
for ( ;i<=a.length-1 ; i++) // check from where i starts and where it ends
{
a[i+1] = Math.pow(2,a[i]); // check what value of i would be here on each iteration
System.out.println((int)(a[i]) );
}
(;i这里没有什么可看的东西
您已经写入了a[0]=num;
,这意味着数组中的第一个值与用户输入的数字相同。因此,您可以再次看到打印的数字。因此
a[0] = 1; // initial value has to be 1, contrary to what you've used
接下来,需要固定生成数组值的循环。当有i+1
时,数组索引在上一次迭代中超出了范围,其中i是a.length-1
。因此,将循环更改为类似这样的内容
for (int i = 1; i < a.length; i++) {
a[i] = Math.pow(2, a[i-1]);
}
for(int i=1;i
现在,在单独的循环中打印数组值,因为前一个循环不会打印数组第一个索引的值
for (int i = 0; i < a.length; i++) {
System.out.println((int)a[i]);
}
for(int i=0;i
将上限更改为a.length-2。其余代码保持不变
import java.util.*;
public class Q1 {
static Scanner scan = new Scanner (System.in);
public static void main(String args [] ) {
int num;
int i = 0;
System.out.println("Enter a number :");
num = scan.nextInt();
double [] a=new double[num];
a[0]= num ;
for ( ;i<=a.length-2 ; i++) {
a[i+1] = Math.pow(2,a[i]);
System.out.println((int)(a[i]) );
}
}
}
import java.util.*;
公开课Q1{
静态扫描仪扫描=新扫描仪(System.in);
公共静态void main(字符串参数[]){
int-num;
int i=0;
System.out.println(“输入一个数字:”);
num=scan.nextInt();
double[]a=新的double[num];
a[0]=num;
对于(;i
只需将循环更改为:
对于(;iimport java.util.*;
公开课Q1{
静态扫描仪扫描=新扫描仪(System.in);
公共静态void main(字符串参数[]){
int-num;
int i=0;
System.out.println(“输入一个数字:”);
num=scan.nextInt();
double[]a=新的double[num];
我曾经有过这样的家庭作业。你的错误可能发生在这一行a[i+1]=Math.pow(2,a[i])是的,我会马上发送over@Walaa你可以从我的回答中得到答案
for (int i = 0; i < a.length; i++) {
System.out.println((int)a[i]);
}
import java.util.*;
public class Q1 {
static Scanner scan = new Scanner (System.in);
public static void main(String args [] ) {
int num;
int i = 0;
System.out.println("Enter a number :");
num = scan.nextInt();
double [] a=new double[num];
a[0]= num ;
for ( ;i<=a.length-2 ; i++) {
a[i+1] = Math.pow(2,a[i]);
System.out.println((int)(a[i]) );
}
}
}
int num ;
System.out.println("Enter a number :");
num = scan.nextInt();
double [] a=new double[num];
a[0]= num ; //Assign First Element To Array
double prev = a[0];
for(int i=1;i<a.length;i++){
a[i] = Math.pow(2,prev);
prev = a[i];
}
for(int i=0;i<a.length;i++)
System.out.println(a[i]);
Enter a number :
3
3.0
8.0
256.0
import java.util.*;
public class Q1 {
static Scanner scan = new Scanner (System.in);
public static void main(String args [] ) {
int num;
int i = 0;
System.out.println("Enter a number :");
num = scan.nextInt();
double [] a=new double[num];
for ( ;i<a.length ; i++) {
a[i] = Math.pow(2,i);
System.out.pri``nt((int)a[i]+ " ");
}
}
}