0

请查看我在代码中的评论以更好地解释事情。基本上有以下方法的问题。我可以运行加载方法,但我不确定用户输入的数字是否实际存储在数组中。

此外,搜索方法一直在扔东西,我认为它是一个循环。

有关更多信息,请参见下文。先感谢您。

import java.util.Scanner;
public class MyContainer {
private int[] values;
private int size;
public MyContainer(){
values=new int[50];
size=0;}

//Load Method - Display a message to the user 
//and get positive intergers from user
public void load()
{
int input;
Scanner in = new Scanner(System.in);
System.out.println("Enter a series of positive integers (Negative to Terminate): ");

input=in.nextInt();
while (input >=0) {
  values[size]=input;
  size++;
  input=in.nextInt();
}

}//End Load

//Compute Average from the above entered numbers
public double computeAverage() {
double avg= 0.0;
int count = 0;
while(values[size] >=0)
{avg = avg + values[size];
count++;
}
size = size + 1;
avg = avg / size;
return avg;

}

//Get user input to search for a number in the array
public boolean search(int myInt){

while(values[size] >=0) {
if (values[size] == myInt){
  return true;}
else{
  size++;}
}
return false;
}

 //print the position of the number
  public void print(){
   for(int i=0;i>=size;i++) {
   System.out.println("The number at position " + i + " is " + values[i]);
 }
 }
}

这就是我到目前为止所拥有的。我还为上述容器创建了一个测试器类。

   class Tester {
   public static void main(String[] args) {
   MyContainer in = new MyContainer();
   in.load();
   in.computeAverage();
   in.search(); //i know for a fact this is wrong just stuck        
   in.print();    
 }
}

任何建议/帮助将不胜感激。我的教授在教学上很糟糕,而且这本书只是部分解释了一些事情。

4

2 回答 2

0

我相信您遇到的主要问题是size变量的重用。在加载函数中,它将按预期工作,加载 10 个数字size将是 10,元素 0-> 9values将在其中包含数字。但是,当您达到computeAveragesize 时仍然是 10。所以您处于无限循环中。

 while(values[size] >= 0) {
    avg = avg + values[size];
    count++;
 }

您将检查的第一次迭代values[10](这是错误的,记住有效元素仅在 0->9 中,如果size是 10)。下一次迭代avgcount增加但size保持不变,因此您将添加相同的数字avg并继续循环。您应该为您的 while 循环使用不同的条件computeAveragesearch。最后输入退出的负数不会在数组中;您将需要使用其他东西。作为提示,它将涉及countand size

于 2013-02-06T17:31:03.270 回答
0

您的 search() 方法具有您未传递的参数。

你把它声明为...

public boolean search(int myInt) {

    while (values[size] >= 0) {
        if (values[size] == myInt) {
            return true;
        } else {
            size++;
        }
    }
    return false;
}

但是用...调用它

in.search();

这段代码甚至不会编译。为了论证起见,我将其设置为 5。

在你的computeAverage()方法中,这是一个无限循环......

while (values[size] >= 0) {
        avg = avg + values[size];
        count++;
    }
于 2013-02-06T17:21:54.990 回答