Eclipse、Java を使用
ある数が素数(1と自分で割り切れる手段)かどうかを調べる方法を作ってみてください
現在、いくつかの機能が作成されています (以下のコード)。このコードは必要な結果を返しますが、素数であるすべての数字ではなく、33 と 55 のfalse
代わりに返されることを意味しtrue
ます。
コード
private static void numberCheker() throws IOException {
System.out.println("Enter number - ");
int number;
number = getNumber();
boolean result = true;
if ((number % 2 == 0) && (number != 2)) {
System.out.println("Not");
} else if (number == 1) {
System.out.println("1 not a valid number");
} else if (number == 2)
System.out.println("Simple");
else {
for (int i = 2; i < number + 1; i++) {
if (number % i == 0) {
result = false;
} else
result = true;
}
if (result = true)
System.out.println("Simple");
else
System.out.println("not Simple");
}
}
質問-「ロジック」のどこを間違えているか-修正に数時間を費やします-しかし、それはできません。なにか提案を?
結果は以下のようになります
Enter number -
1
simple
Enter number -
2
simple
Enter number -
3
simple
Enter number -
4
not simple
Enter number -
5
simple
...
しかし、私は得ました
Enter number -
33
not simple - **WRONG**
Enter number -
55
not simple - **WRONG**
編集:
マイケル・コニエツカのようにやってくれてありがとう。
private static boolean numberCheker() throws IOException {
System.out.println("Enter number - ");
int number = getNumber();
for (int i=2;i<number;i++)
{
if (number%i==0) return false;
}
return (number>1);
}
および getNumber()
public static int getNumber () throws IOException{
int temp;
try{
BufferedReader bReader = new BufferedReader (new InputStreamReader(System.in));
String resultReader = bReader.readLine();
temp = Integer.parseInt(resultReader);
return temp;
}
catch (NumberFormatException failDescription){
System.out.println(failDescription);
return 0;
}
}
今では完璧に機能します。ご協力いただきありがとうございます。