2013-02-19 207 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