从数组返回值

时间:2016-02-15 07:23:16

标签: java arrays return

我有Fibonacci程序,它计算并返回用户给出的Fibonacci数。但是我不知道如何打印出fibaux方法给出的返回值,例如输出:fib 46是1836311903。

import java.util.InputMismatchException;
import java.util.Scanner;

public class Fibonacci {

    // main
    public static void main(String[] args) {
        try {
            System.out.print("Enter number you would like to calculate ");
            Scanner input = new Scanner(System.in);
            int inputNumber = input.nextInt();
            if (handleArguments(inputNumber)){
                fib(inputNumber);

            }


        } catch (InputMismatchException exception) {
            System.out.println("Input not an integer");
        }


    }

    // Handle special case when n == 0
    public static int fib(int n){
        if(n == 0){
            return 0;

        }else{
            int fibauxArray[] = fibaux(n);
            return fibauxArray[0];
        }

    }

    // Auxiliary function
    // Return the nth and (n-1)th Fibonacci numbers
    // n must be an integer >= 1
    public static int[] fibaux(int n){
        // base case for recursion
        if(n == 1) {
            return new int[] {1, 0};
            // recursive case
        }else{
            int [] fibauxRecursive = fibaux(n - 1);
            int f1 = fibauxRecursive[1];
            int f2 = fibauxRecursive[0];

            return new int[] {f1 + f2, f1};
        }
    }

    static boolean handleArguments(int input) {
        if (input >= 0 && input <= 46){
            return true;
        }else{
            System.out.println("Error: number must be between 0 to 46");
            return false;
        }

    }
}

2 个答案:

答案 0 :(得分:2)

int a=fib(inputNumber); 以这种方式调用该函数。函数返回的值将存储在变量a中。

打印值:

System.out.println(a);

查看要进行的更改:

public static void main(String[] args) {
        try {
            System.out.print("Enter number you would like to calculate ");
            Scanner input = new Scanner(System.in);
            int inputNumber = input.nextInt();
            if (handleArguments(inputNumber)){
                int a=fib(inputNumber); //value returned will be stored in a
                System.out.println(a); //printing a

            }


        } catch (InputMismatchException exception) {
            System.out.println("Input not an integer");
        }
     }

OR 只需提及System.out.println(fib(inputnumber));而不是fib(inputnumber);

答案 1 :(得分:0)

看一下方法返回类型。我只是说它会返回一个int public static int fib(int n)'。所以无论在一天结束时方法内部会发生什么,该方法都将返回一个int。因此,只需为其分配一个新变量并将其打印出来,如下所示。

int returnVal =fib(inputNumber);
System.out.println(returnVal);