2015-07-10 45 views
-3

所以我一直在這個相同的例子問題一個星期了。我知道它可能似乎很容易,但我發現我越看它或改變它,越多 困惑,我得到。我覺得我要讓這個難度比 需要更多。我加載的數組在Try-Catch部分中正確顯示,但我需要用它自己的方法顯示它,我調用listOfAges()。這看起來像什麼?任何反應表示讚賞,請幫助。循環陣列讓我變傻

class ArrayDemo { 
public static void main(String[] args) { 

    int[] anArray; 
    int ageCount = 0; 
    int age; 
    String filename = "ageData.dat"; 

    anArray = new int[50]; 
    /* The file has 50 numbers which represent an employee's age */ 
    try { 
     Scanner infile = new Scanner(new FileInputStream(filename)); 

     while (infile.hasNext()) { 

      age = infile.nextInt(); 
      ageCount += 1; 

      System.out.println(ageCount + ". " + age + "\n"); 
      /* 
      * When i run just this, the output is correct... 
      * 
      * But i don't want the output here, i just want to gather 
      * the information from the file and place it at the bottom inside 
      * the method displayAges().*/ 

     } 

     infile.close(); 

    } catch (IOException ex) { 
     ageCount = -1; 
     ex.printStackTrace(); 
    } 


    public void listOfAges() { 
     System.out.print(" I want to display the data gathered from ageData.dat in this method "); 
     System.out.print(" Also, i receive this error message when i try: 'Illegal modifier for parameter listOfAges; only final is permitted' ") 
    } 


} 
} 

回答

0

首先,你有你的值存儲陣列中:

while (infile.hasNext()) { 
    age = infile.nextInt(); 
    anArray[ageCount] = age; 
    ageCount += 1; 
} 

你的下一個問題是,你定義你的listOfAges()方法main()方法。定義必須在外面。您還需要您的數組作爲參數傳遞給你的方法,讓您可以在陣列值重複,以打印出來:

public void listOfAges(int[] ages) { 
    // use a loop here to print all your array contents 
} 
+0

這些例子正是我一直在努力的,非常有幫助的人。非常感謝 –

0

所以我假設你想在你的方法來顯示陣列中的每個元素。你的第一個問題是主要的方法是靜態的,你試圖調用一個不是靜態的方法(listOfAges)。通過簡單地將static這個詞添加到方法來使其變爲靜態來改變這一點。你也把這個方法放在主要方法中。您需要將它移到括號外。

其次,要顯示您需要循環的內容,但您要保存數據的數組需要超出主方法。代替

int[] anArray; 

在主要方法中,將其刪除並將其移到主方法的聲明之上。你還需要把它變成一個靜態變量。

static int[] anArray; 

最後在listOfAges中添加代碼來循環它。

for (int i = 0; i < anArray.length; i++) { 
    System.out.println(anArray.length + ". " + anArray[i]); 
} 
+0

非常感謝 –

0

我不是100%肯定你問什麼,但在這裏:

} infile.close(); } catch(IOException ex){ageCount = -1; ex.printStackTrace(); }

在你的While.infile循環中,你正在關閉你的infile.close()循環,而不是打開一個新循環。所以只需將其更改爲{infile.close(); }而不是...

因爲我不確定你到底在問什麼,這將是我能給你的最好的答案,希望我能幫上忙。