0

物事をよりよく説明するために、コード内の私のコメントを参照してください。基本的に以下の方法で問題があります。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();    
 }
}

任意のアドバイス/ヘルプをいただければ幸いです。私の教授は教えるのがひどくて、本は物事を部分的にしか説明していません。

4

2 に答える 2

0

あなたが遭遇している主な問題は、size変数の再利用です。load 関数では、10 個の数値をロードsizeすると 10 になり、要素 0->9 に数値が含まれるなど、期待どおりに機能valuesします。ただし、サイズに到達しcomputeAverageても10のままです。したがって、無限ループに陥っています。

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

チェックする最初の反復values[10](これは間違っています。10 の場合、有効な要素は 0->9 にのみあることを覚えておいてくださいsize)。次の反復avgcountは増加しsizeますが、同じままなので、同じ数を に追加avgしてループを続行します。と の while ループには別の条件を使用する必要がcomputeAverageありsearchます。終了するために最後に入力された負の数は配列に含まれません。他のものを使用する必要があります。ヒントとして、 と が含まcountsizeます。

于 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 に答える