-1

私の問題は「NumberAnalyzer.java」クラスにあります。「Number.java」クラスを使用して、ArrayListの数値が奇数であるかどうか(偶数であり、後で完全であるかどうか)を判断できるはずですが、 「Number.java」の「isOdd()」メソッドは int やその他の変数自体を読み取らず、「NumberAnalyzer」の「countOdds」メソッドで各数値をテストして「oddCount」を作成する方法が見つかりません。 .java" を増やして、ランナー クラスからの文字列に奇数の数を生成します。

NumberAnalyzer.java

import java.util.ArrayList;
import java.util.Scanner;

import com.sun.xml.internal.ws.api.pipe.NextAction;

import static java.lang.System.*;

public class NumberAnalyzer
{
private ArrayList<Number> list;

public NumberAnalyzer()
{

}

public NumberAnalyzer(String numbers)
{
    list = new ArrayList<Number>();
    String nums = numbers;
    Scanner chopper = new Scanner(nums);
    while(chopper.hasNext()){
        int num = chopper.nextInt();
        list.add(new Number(num));
    }
    chopper.close();
    System.out.println(list);
}

public void setList(String numbers)
{
    list = new ArrayList<Number>();
    String nums = numbers;
    Scanner chopper = new Scanner(nums);
    while(chopper.hasNext()){
        int num = chopper.nextInt();
        list.add(new Number(num));
    }
    chopper.close();

}

public int countOdds()
{
  int oddCount=0;
  for(int i = 0; i < list.size(); i++){
      if(Number.isOdd()== true){
          oddCount++;
      }
  }
  return oddCount;
}

public int countEvens()
{
  int evenCount=0;



  return evenCount;
}

public int countPerfects()
{
    int perfectCount=0;



  return perfectCount;
}

public String toString( )
{
    return "";
}
}

Number.java

public class Number
{
private Integer number;

public Number()
{


}

public Number(int num)
{
    number = num;
}

public void setNumber(int num)
{
    number = num;
}

public int getNumber()
{
    return number;
}   

public boolean isOdd()
{
    if(number%2==0){
        return false;
    }
    return true;
}

public boolean isPerfect()
{
    int total=0;
    for(int i = 1; i < number; i++){
        if(number%i==0){
            total+= i;
        }
    }


    return (number==total);
}   

public String toString( )
{
    String output = getNumber() + "\n" + getNumber()+ "isOdd == " + isOdd() + "\n" + getNumber()+ "isPerfect==" + isPerfect()+ "\n\n";
    return output;
}
}

ランナークラス

import java.util.ArrayList;
import java.util.Scanner;
import static java.lang.System.*;

public class Lab16b
{
public static void main( String args[] )
{
    NumberAnalyzer test = new NumberAnalyzer("5 12 9 6 1 4 8 6");
    out.println(test);
    out.println("odd count = "+test.countOdds());
    out.println("even count = "+test.countEvens());
    out.println("perfect count = "+test.countPerfects()+"\n\n\n");


    //add more test cases


}
}
4

1 に答える 1

0

電話すると

test.countOdds());

制御は NumberAnalyzer.java に移動します

public int countOdds()
{
  int oddCount=0;
  for(int i = 0; i < list.size(); i++){
      if(Number.isOdd()== true){
          oddCount++;
      }
  }
  return oddCount;
}

そして、ここでは静的な方法としてクラス名でメソッドを呼び出していますが、静的ではないNumber.isOdd()ため、この方法で実行できるとは思いませんisOdd()

コンパイル時エラーです

解決:

リストを繰り返し、リストからisOdd(int val)メソッドに値を 1 つずつ送信します。

isOdd()1 つの数値パラメーターを受け入れ、true または false を返すメソッドを static にしてみてください。

あなたがそうするように、リターンタイプに基づいてカウンターを増やしてください。

于 2013-01-10T10:47:54.123 に答える