Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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,我正在尝试创建一个程序,该程序可以在斐波那契序列中找到400万以下的偶数之和。我知道有一种更简单的方法,但我想看看它是否能与数组一起工作。我以前从未真正使用过数组,因为我对Java相当陌生,这就是为什么我想看看这是否适用于数组。我的主要问题是for语句。如何查看fibarray[I]的内容是否少于4000000 另外,如果我用fibarray=newint[I]做这件事可以吗 如果这听起来真的很愚蠢,我道歉。 任何帮助都将不胜感激。 谢谢。那么,您需要以i=2开始for循环。for循环应该采用这

我正在尝试创建一个程序,该程序可以在斐波那契序列中找到400万以下的偶数之和。我知道有一种更简单的方法,但我想看看它是否能与数组一起工作。我以前从未真正使用过数组,因为我对Java相当陌生,这就是为什么我想看看这是否适用于数组。我的主要问题是for语句。如何查看fibarray[I]的内容是否少于4000000

另外,如果我用fibarray=newint[I]做这件事可以吗

如果这听起来真的很愚蠢,我道歉。 任何帮助都将不胜感激。
谢谢。

那么,您需要以i=2开始for循环。for循环应该采用这种语法

for(i = 2; fibarray[i] < 4000000; i++) {
  fibarray[i] = fibarray[i - 1] + fibarray[i - 2];
}

请参见代码中的注释:

public static void main(String[] args){
    /*************************
    * comments on your code
    int[] fibarray; //use right java naming convention
    int numCount = 0; //this variable is never used
    int i = 0;
    long sum = 0;
    fibarray = new int[i];//you initialize an array of size 0.
    fibarray[0] = 0; //you can't set value to array of size 0
    fibarray[1] = 1; //you can't set value to array of size 0

    //wrong syntax
    for(i = 0 , fibarray[i] < 4000000, i++;;){
    //use for(i = 0 ; fibarray[i] < 4000000; i++){

        fibarray[i] = fibarray[i - 1] + fibarray[i - 2];
    }

    *******************************/
    //Alternative code
    //you don't need to keep all Fibonachi numbers found.
    //you only use 3 numbers for every calculation
    int size = 3;
    int totalLimit = 4000000;
    int[] fibArray = new int[size];
    fibArray[0] = 0;  fibArray[1] = 1;
    int total = 0;

    while( true ) {

        fibArray[2] = fibArray[0] + fibArray[1] ;

        if((fibArray[2]%2) ==0) { //even number

            if((total + fibArray[2]) >= totalLimit) {
                break;
            }

            total += fibArray[2];
        }

        fibArray[0] = fibArray[1] ;
        fibArray[1] = fibArray[2] ;
    }

    System.out.println("Total "+  total );  
}

如果需要,请不要犹豫要求澄清。

为什么您认为这样做行不通?在尝试获取类名索引时,您的意思是什么?首先,您必须创建一个对象,比如ArrayList a=new ArrayList或int[]a=new int[capacity]。之后,如果[i]>4000,那么使用您提到的这种构造就没有问题了。@Bashalex无需提及ArrayList。它们有不同的语法,OP的基本问题是数组语法。您能否提供详细信息/参考以支持您认为它不起作用的观点?它不起作用,因为它有语法错误,并且使用了大小为0的数组。您是否只想将偶数斐波那契数相加到4M?如何设置fibarray的大小?@c0在使用int[]fibarray=new int[size_of_array]进行设置时;我有你在评论中提出的很多问题。我知道我现在做错了什么。谢谢没问题,我以后会继续的。我想问的另一件事是,如何将数组[x]的内容与数字进行比较?我可以使用>和<符号将数组的内容与数字进行比较吗?可以。它很简单,可以运行一个简单的测试并亲自查看。谢谢,我只是问了一下,因为出于某种原因它不起作用。我没有否决投票。我不能-我只有不到15个孩子。
public static void main(String[] args){
    /*************************
    * comments on your code
    int[] fibarray; //use right java naming convention
    int numCount = 0; //this variable is never used
    int i = 0;
    long sum = 0;
    fibarray = new int[i];//you initialize an array of size 0.
    fibarray[0] = 0; //you can't set value to array of size 0
    fibarray[1] = 1; //you can't set value to array of size 0

    //wrong syntax
    for(i = 0 , fibarray[i] < 4000000, i++;;){
    //use for(i = 0 ; fibarray[i] < 4000000; i++){

        fibarray[i] = fibarray[i - 1] + fibarray[i - 2];
    }

    *******************************/
    //Alternative code
    //you don't need to keep all Fibonachi numbers found.
    //you only use 3 numbers for every calculation
    int size = 3;
    int totalLimit = 4000000;
    int[] fibArray = new int[size];
    fibArray[0] = 0;  fibArray[1] = 1;
    int total = 0;

    while( true ) {

        fibArray[2] = fibArray[0] + fibArray[1] ;

        if((fibArray[2]%2) ==0) { //even number

            if((total + fibArray[2]) >= totalLimit) {
                break;
            }

            total += fibArray[2];
        }

        fibArray[0] = fibArray[1] ;
        fibArray[1] = fibArray[2] ;
    }

    System.out.println("Total "+  total );  
}