请在代码中查看我的评论,以便更好地解释一下。基本上有以下方法的问题。我可以运行load方法,但我不确定用户输入的数字是否实际存储在数组中。
此外,搜索方法一直在抛弃,我认为它会循环。
请参阅下文了解更多信息。提前谢谢。
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();
}
}
任何建议/帮助将不胜感激。我的教授教学很糟糕,这本书只是部分地解释了事情。
答案 0 :(得分: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++;
}
答案 1 :(得分:0)
我认为您遇到的主要问题是重用size
变量。在加载函数中,它将按预期工作,加载10个数字size
将为10,values
中的元素0-> 9将包含数字。但是当你到达computeAverage
时,大小仍然是10.所以你处于无限循环中。
while(values[size] >= 0) {
avg = avg + values[size];
count++;
}
首次迭代,您将检查values[10]
(如果size
为10,则错误记住有效元素仅在0-> 9中)。下一次迭代avg
和count
会增加但size
保持不变,因此您将相同的数字添加到avg
并继续循环。您应该在computeAverage
和search
中为while循环使用不同的条件。输入退出的最后一个负数不在数组中;你需要使用别的东西。作为提示,它将涉及count
和size
。