Java布尔返回错误
我对java(以及一般的编程)还不熟悉,所以决定编写一个程序来检查一个数字是否为素数 我制定了一个工作计划:Java布尔返回错误,java,boolean,Java,Boolean,我对java(以及一般的编程)还不熟悉,所以决定编写一个程序来检查一个数字是否为素数 我制定了一个工作计划: import java.io.*; public class PrimeChecker { public static void main (String[] args) throws IOException { BufferedReader Reader = new BufferedReader (new InputStreamReader (System.in));
import java.io.*;
public class PrimeChecker
{
public static void main (String[] args) throws IOException
{
BufferedReader Reader = new BufferedReader (new InputStreamReader (System.in));
int factor = 2;
boolean check = true;
System.out.println("Please input a number.");
int number = Integer.parseInt(Reader.readLine ());
if (number == 1)
{
System.out.println(number + " is neither prime nor composite.");
}
else
{
while (factor <= Math.sqrt(number))
{
if (number % factor == 0)
{
check = false;
break;
}
factor++;
}
if (check)
{
System.out.println(number + " is a prime number.");
}
else
{
System.out.println(number + " is a composite number (not prime).");
}
}
}
}
我浏览了这个网站上的许多问题,寻找一些可以解释这些问题的东西,但什么也没找到。有人能告诉我为什么会出现这些错误吗?您的代码中有几个错误 首先,在另一个方法中定义一个新方法。这在java中不起作用
public boolean isPrime()
{
return (!(number % factor == 0));
}
factor++;
}
所以你必须把它放在代码的其余部分
第二:该方法必须是静态的,因为您希望从静态方法调用该方法
第三:必须将参数传递给方法:
public static boolean isPrime(int number, int factor) {
return number % factor != 0;
}
你必须称之为:
if (isPrime(factor, number))
因此,您的类必须看起来像:
public class PrimeCheckerv2 {
public static void main(String[] args) throws IOException {
BufferedReader Reader = new BufferedReader(new InputStreamReader(
System.in));
int factor = 2;
System.out.println("Please input a number.");
int number = Integer.parseInt(Reader.readLine());
if (number == 1) {
System.out.println(number + " is neither prime nor composite.");
} else {
while (factor <= Math.sqrt(number)) {
factor++;
if (isPrime(factor, number)) {
System.out.println(number + " is a prime number.");
} else {
System.out.println(number
+ " is a composite number (not prime).");
}
}
}
}
public static boolean isPrime(int number, int factor) {
return number % factor != 0;
}
}
公共类PrimeCheckerv2{
公共静态void main(字符串[]args)引发IOException{
BufferedReader Reader=新的BufferedReader(新的InputStreamReader(
系统(in),;
整数因子=2;
System.out.println(“请输入一个数字”);
int number=Integer.parseInt(Reader.readLine());
如果(数字==1){
System.out.println(number+“既不是素数也不是复合数”);
}否则{
while(factor)你看过第19行了吗?@Zavior它也可能是之前的一行……你在一个方法中声明一个方法,你不能这样做。你在while循环中有public boolean isPrime()
,在main
中修复了提到的错误。仍然有错误你仍然在声明isPrime()main
方法中的
method。Gaaah,你比我强。注意:factor++不是函数的一部分。我修改了我的代码,现在它与你编写的代码完全一样,但我仍然有3个错误。它现在想让我在isPrime、int number和int factor之后的第32行中加上分号。另外,是否要求我在后面加上布尔值r函数,或者我可以将其放在声明变量的位置之前吗?当number
为素数时,此代码将为每个测试因子打印“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
if (isPrime(factor, number))
public class PrimeCheckerv2 {
public static void main(String[] args) throws IOException {
BufferedReader Reader = new BufferedReader(new InputStreamReader(
System.in));
int factor = 2;
System.out.println("Please input a number.");
int number = Integer.parseInt(Reader.readLine());
if (number == 1) {
System.out.println(number + " is neither prime nor composite.");
} else {
while (factor <= Math.sqrt(number)) {
factor++;
if (isPrime(factor, number)) {
System.out.println(number + " is a prime number.");
} else {
System.out.println(number
+ " is a composite number (not prime).");
}
}
}
}
public static boolean isPrime(int number, int factor) {
return number % factor != 0;
}
}