【问题标题】:storing in array and printing array存储在数组和打印数组中
【发布时间】:2013-02-19 08:53:57
【问题描述】:

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

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

【问题讨论】:

  • values[count] = number; 之类的 while 循环应该将数字存储在数组中。如果没有,您能否扩展“不允许我将输入存储在数组中”?要打印数组,您可以考虑采用与一开始读取数字的方式类似的方法。由于您会提前知道要打印多少个数字,因此您可以在教科书中查找 for 循环。
  • 啊,我被缩进弄糊涂了,错过了将数字读入main()的点,这是静态的,因此无法从那里访问values。跨度>

标签: java arrays


【解决方案1】:

简要总结一下我所做的更改:

1) 你有 3 个变量做同样的事情,所以我去掉了其中的 2 个。 (numOfInputs 和计数)。

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

3) 我在循环中添加了一个条件,以便在 50 个数字后循环停止,因此您永远不会超过数组的大小。

4) 将大部分主要内容移至另一种方法。 Java(和大多数其他语言)不允许静态方法访问非静态变量。所以 main 创建了一个 MyContainer 的新实例,然后调用一个方法来进行添加。

5) 我添加了一个打印列表方法,它只是使用循环遍历列表。

导入 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; //删除计数 双重平均 = 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:关于将大部分代码放入非静态成员函数的价值,从而允许访问values,这是从main() 无法访问的,因为main()是静态的。
  • 感谢您的帮助!这真的很有帮助。西蒙-我尝试使用“ values[count] = number;”格式存储之前和当我这样做时,它给我一个错误,说']'是预期的,它是非法的表达开始。我不知道为什么。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多