2013-02-19 206 views
0

我必須創建一個程序,要求用戶輸入一系列數字,並將輸入保存在數組中。然後稍後允許用戶搜索數組中的數字並打印數組。我被卡住了,因爲它不讓我將輸入存儲在數組中。我也需要幫助打印陣列。存儲在陣列和打印陣列

我正在學習一個Java類,我們使用的教科書根本沒有任何幫助,有沒有人對Java教科書有什麼建議?

這是到目前爲止我的代碼:

import java.util.Scanner; 
public class MyContainer { 

    private int [] values; 
    private int size; 

public MyContainer() { 
    values = new int[50]; 
    size=0; 
    } 

    public static void main(String [] args) 
    { 

//load() 
Scanner input = new Scanner(System.in); 
double sum = 0; 
System.out.print("Enter a positive number, negative number will end entry."); 
double number = input.nextDouble(); 
int count = 0; 
double average = 0; 
int numofinput = 0; 

while (number >= 0) 
{ 
    count++; 
    numofinput ++; 
    sum += number; 
    System.out.print("Enter a positive number, negative number will end entry."); 
    number = input.nextDouble(); 
} 
sum = sum + number; 
average = sum/numofinput; 
    System.out.print("The average of the numbers as of right now is " 
+ average); 

} 

//search() 
+0

像'值[數] =數目;'在'while'迴路應頁碼存儲在數組中。如果沒有,你可以擴展「不讓我把輸入存儲在數組中」嗎?爲了打印數組,你可以考慮採用類似的方法來讀取數字。由於您事先知道打印出多少個數字,因此您可以在教科書中查找「for」循環。 – Simon 2013-02-19 00:40:46

+0

啊,我被縮進困惑了,並且錯過了將數字讀入'main()'這一點,這是靜態的,因此'values'不能從那裏訪問。 – Simon 2013-02-19 02:07:41

回答

1

簡要歸納的變化我製作:

1)你有3個變量做同樣的事情,所以我擺脫了其中2個。 (numOfInputs和count)。

2)您正在通過循環詢問用戶的號碼,但您從未將數字添加到數組中。

3)我向循環中添加了一個條件,以便50個數字之後循環停止,因此您永遠不會超過數組的大小。

4)將大部分主要移動到另一個方法。 Java(以及大多數其他語言)不允許靜態方法訪問非靜態變量。所以main創建一個MyContainer的新實例,然後調用一個添加的方法。

5)我添加了一個打印列表方法,它只是通過循環遍歷列表。

import java.util.Scanner;

公共類myContainer中{

private double[] values; 
private int size; 
public MyContainer() { 
    values = new double[50]; 
    size = 0; 
} 

public void run(){ 
    // load() 
    Scanner input = new Scanner(System.in); 
    double sum = 0; 
    System.out.print("Enter a positive number, negative number will end entry."); 
    double number = input.nextDouble(); 

//詮釋計數= 0; // count removed double average = 0;

while (number >= 0 && size < values.length) { 
     values[size] = number; //Line added 
     size++; 
     sum += number; 
     System.out.print("Enter a positive number, negative number will end entry."); 
     number = input.nextDouble(); 
    } 

    sum = sum + number; 
    average = sum/size; 
    System.out.println("The average of the numbers as of right now is " + average); 

} 

public void printList(){ 
    System.out.print("["); 
    for (int i = 0; i <= size; i++){ 
     System.out.print(values[i]+", "); 
    } 
    System.out.println("end]"); 
} 

public static void main(String[] args) { 
    MyContainer cont = new MyContainer(); 
    cont.run(); 
    cont.printList(); 
} 

}

+0

+1:將大部分代碼放入非靜態成員函數中的好處,從而允許訪問'values',由於main()是靜態的,所以'main()'不可訪問'values'。 – Simon 2013-02-19 02:04:19

+0

謝謝你的幫助!這真的很有幫助。 西蒙 - 我試圖在使用「values [count] = number;」格式之前和當我這樣做的時候給我一個錯誤,說'''是'預期的並且它是非法表達的開始。我不知道爲什麼。 – user2085224 2013-02-20 23:32:09