2016-11-07 35 views
0

我試圖讓程序使用最小和最大長度的數組,並根據用戶輸入最大和最小(整數或雙)它會創建一個數組int或double。我的代碼的問題是當我嘗試運行它時,編譯器說變量沒有被初始化。我假設做一個重載方法更好,但我不知道如何。Java-製作整型數組或雙列數組

import java.util.Scanner; 
public class RandomGames{ 
public static void main(String [] args){ 
    randomArray(); 

    }//end of main 
public static void randomArray(){ 
    Scanner input = new Scanner(System.in); 
    System.out.println("Please enter the length of desired array: "); 
    int length = input.nextInt(); 
    int [] randomNumbers = new int [length]; 
    System.out.println("Please enter the highest number: "); 
    if (input.hasNextInt()){ 
    int max = input.nextInt(); 
    } 
    else if (input.hasNextDouble()){ 
    double max = input.nextDouble(); 
    } 
    System.out.println("Please enter the Lowest number: "); 
    if (input.hasNextInt()){ 
    int min = input.nextInt(); 
    } 
    else if (input.hasNextDouble()){ 
    double min = input.nextDouble(); 
    } 
    arrayReturn(max, min); 
    } //end of randomArray 
public static void arrayReturn(int max, int min){ 
    System.out.println("This will return "+max+"min :"+ min +"in int"); 
    } 
public static void arrayReturn(double max, double min){ 
    System.out.println("This will return "+max+"min :"+ min +"in double"); 

    } 
} 

回答

-1

您初始化了if報表內minmax變量。在if語句的範圍之外,您不能訪問已經初始化的變量。

+0

這應該是一個評論 –

+0

的問題是,如果我初始化我的if語句之外,那麼它會只限於一種類型的變量,int或雙。 – Aria

+0

請不要混淆「初始化」和「聲明」。只要你在外面聲明它們,就可以在裏面初始化它們。這個答案不是很對。原始代碼的問題比這個更多。 –

2

如果聲明大括號中的變量在

if (input.hasNextInt()){ 
    int max = input.nextInt(); 
} 

那麼他們只有這個範圍內可見。

因此,作爲一個最小的,你需要改變

int max = 0; 
if (input.hasNextInt()){ 
    max = input.nextInt(); 
} 

現在,當您同時使用相同的doubles那麼也許創造了一個新的變量doubles

double maxD = 0.0; 
else if (input.hasNextDouble()){ 
    maxD = input.nextDouble(); 
    } 

注意

我不確定你產生arrays的邏輯,但如果y你需要爲兩個數字之間的雙數生成一個數組,那麼你將擁有無限數量的值。

做正確的事情,我建議你寫你自己的類,它擴展數,爲簡單起見,您的類的構造函數可以採取boolen值說,如果它是一個雙或int。

+0

的問題是,你可以看到我使用重載的方法公共靜態無效arrayReturn(INT最大,INT分鐘){ 的System.out.println( 「這將返回 」+ MAX +「 最小:」 + MIN +「在INT「); } 公共靜態無效arrayReturn(雙最大值,雙分鐘){ 的System.out.println( 「這將返回 」+ MAX +「 分鐘:」 +分鐘+ 「雙」); } – Aria

+0

是的,我建議你創建自己的類來擴展Number https://docs.oracle.com/javase/7/docs/api/java/lang/Number.html –