Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 循环被切割为数组的一个元素_Java_Arrays - Fatal编程技术网

Java 循环被切割为数组的一个元素

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;

问题是:

编写一个程序,读取一个数字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;
    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
只需将循环更改为:

对于(;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[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]+ " ");
    }
  }
}