【发布时间】:2014-11-16 21:05:17
【问题描述】:
我必须写一段代码,这就是我目前所拥有的:
素数是一个只能被它自己和 I 整除的数。例如, 数字 5 是素数,因为它只能被 1 和 5 整除。然而,数字 6, 不是素数,因为它可以被 1、2、3 和 6 整除。 编写一个名为 isPrime 的方法,它接受一个整数作为参数,如果 参数是素数,否则为假。完整地演示该方法 程序。
这是目前为止的代码:
package isprime;
import java.util.Scanner;
public class IsPrime {
public static void main(String[] args) {
Scanner userInput = new Scanner(System.in);
System.out.println("Write a number.");
int num = userInput.nextInt();
}
public static boolean isPrime(int num) {
int isPrime = num % num;
if (isPrime !=0 || isPrime != 1)
return false;
else
return true;
}
}
现在的问题是我不太了解布尔表达式的工作原理,所以这就是为什么我将内部方法设为布尔值,但它不会在内部方法中选择用户编号响应。这就是我卡住的地方。此外,还有一条消息说 if 是多余的?任何人都可以帮助获得答案,而不是答案本身吗?从长远来看,我不会学习如何做到这一点。
第 2 部分:
现在我必须将这些质数放入一个文件中。我知道我必须使用 PrintWriter,但我不确定将它放在哪里。另外,如何创建文件,使用 PrintWriter fileName = new PrintWriter("PrimeNumbers.txt");
这是创建的新代码:
package isprime_final;
import java.io.PrintWriter;
import java.util.Scanner;
public class IsPrime_Final
{
public static void main(String args[]){
Scanner fileName = new Scanner(System.in);
System.out.println("Name the file for Prime Number list.");
String primeList = fileName.nextLine();
for (int isPrime = 0; isPrime <= 100; isPrime++) {
if (isPrime(isPrime)) {
PrintWriter PrimeNumbers = new PrintWriter(System.out);
PrintWriter.println(isPrime);
}
}
PrintWriter.close();
}
public static boolean isPrime(int prime) {
if ((prime & 1) == 0) {
if (prime == 2) {
return true;
} else {
return false;
}
}
for (int i = 3; (i * i) <= prime; i += 2) {
if ((prime % i) == 0) {
return false;
}
}
return prime != 1;
}
}
【问题讨论】:
-
一个数除以自身后的余数始终为 0。所以
isPrime始终为 0。另外,isPrime !=0 || isPrime != 1始终为真。