存储在数组和打印数组中

时间:2013-02-19 00:27:22

标签: java arrays

我必须创建一个程序,要求用户输入一系列数字,并将输入保存在数组中。然后,稍后允许用户在数组中搜索数字并打印数组。我被卡住了,因为它不允许我将输入存储在数组中。我还需要帮助打印阵列。

我正在学习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()

2 个答案:

答案 0 :(得分:1)

简要总结我所做的改变:

1)你有3个变量做同样的事情,所以我摆脱了其中2个。 (numOfInputs和count)。

2)您正在通过循环询问用户数字,但您从未将数字添加到数组中。

3)我在循环中添加了一个条件,这样在50个数字之后循环停止,所以你永远不会超过数组的大小。

4)将main的大部分移动到另一个方法。 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();

// int count = 0; //计数已移除         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();
}

}

答案 1 :(得分:0)

你真的应该搜索这样的东西,有很多关于如何使用这样的数组的例子:How to put a Scanner input into an array... for example a couple of numbers