繁体   English   中英

素数测试初学者Java

[英]Prime Number test beginner Java

用于测试正数(称为 num)的大学作业是否为质数。 我必须使用 Do while 循环我尝试了如下代码,但测试失败

public class Primes {
public static main void (String args[]){
int num = 1;
int 2 = 0;
boolean flag = false;
do {
if (num%i == 1) {
flag = true;
break:
}
num ++

while (i<=num);
{
if (flag = true);
{
System.out.println (num + "is a prime number ");
}
else
{
System.out.prinln (num + "is not a prime number ");
}
}
}
}

1.主函数签名

它应该是

public static void main(String args[])

不是

public static main void (String args[])

2.变量名不能以数字开头

int 2 = 0;

你可能是说

int i = 0;

3. do { ... } while(...);

do while 循环的格式是

do {
  something();
} while (condition);

4. 分号表示语句结束

while (condition); {
  something();
}

在这种情况下, something()不在您的 while 循环中

5. 注意分配if

if (flag = true)

这是将flag分配给true 并且条件始终为真(因为赋值的结果为真)。

6. 不是System.out.prinln

它是System.out.println 使用 IDE。

最终解决方案

public class Primes {
    public static void main(String args[]) {
        int num = 3;
        int i = 2;
        boolean flag = false;
        do {
            if (num % i == 0) {
                flag = true;
                break;
            }
            i++;
        } while (i < num);
        if (!flag) {
            System.out.println(num + " is a prime number ");
        } else {
            System.out.println(num + " is not a prime number ");
        }
    }
}

我还修复了一些逻辑问题,例如

  1. 你应该增加i而不是num
  2. while (i < num)而不是while (i<=num) ,否则 some (last) i总是等于num ,使一切都不是素数
  3. 当 flag 为真时,数字不是素数。 您可能应该反转if逻辑。 当您找到可整除的东西时,Flag 为真,这意味着该数字不是素数。

有更好的解决方案,但我坚持你的格式。

你有几个不同的问题:

首先,它应该是:

public static void main(String[] args){

其次,第 4 行的变量没有名称。

你的 do while 语句的格式也不太正确。

另一张海报在这里有一个很好的 do while 循环示例: Do-while 循环 java 解释

此外,请查看分号放置位置的规则。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM