简而言之,我再次在网上找到了这个任务:
从键盘上输入整数,检查是否是质数。当你输入0时,程序结束。
到目前为止,我编写了检查整数是否为素数的逻辑。主要的问题是,我应该从一个字符串中读取几个整数,如果最后一个整数是0,就停止程序。所以,当我尝试添加循环来迭代输入并检查它们是否为整数素数时,我的逻辑不起作用,它只返回1个整数,没有其他整数。如果您有任何建议或批评,我将不胜感激,谢谢。
import java.util.Scanner;
public
class PrimeNumber
{
public
static void main(String[] args)
{
int temp;
boolean isPrime = true;
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int[] arr = new int[num];
for (int i = 0; i < arr.length; i++)
{
arr[i] = sc.nextInt();
for (int y = 2; y <= num / 2; i++)
{
temp = num % i;
if (temp == 0)
{
isPrime = false;
break;
}
}
}
if (isPrime)
System.out.println(num + " is a Prime Number");
else
System.out.println(num + " is not a Prime Number");
}
}
你的思维过程很好。
首先,划分int
值并不理想,因此将arr[]
更改为双
数组。
在最后一段代码中,if-else
,println()
调用printnum
的值,它在代码中只是用户将键入的int
值的数量(基本上是arr.length-1
)。它也在for
循环之外,因此只会发生一次。让我们将num
重命名为numberOfInts
。
如果所讨论的int
(arr[i]
)可被1
或arr[i]
以外的数整除,则它不是素数。此外,如果它等于0
或1
,则它也不是素数。
最后,确保isPrime
重置为true
。
我建议以println()
的形式添加说明,这样就更清晰了:
public static void main(String[] args)
{
int temp;
boolean isPrime;
Scanner sc = new Scanner(System.in);
System.out.print("Number of integer values: ");
int numberOfInts = sc.nextInt();
int[] arr = new int[numberOfInts];
for (int i = 0; i < arr.length; i++)
{
isPrime = true;
System.out.print("Int " + (i+1) + " = ");
arr[i] = sc.nextInt();
for (int y = 2; y <= arr[i] - 1; y++)
{
temp = arr[i] % y;
if (temp == 0 || arr[i] == 0 || arr[i] == 1)
{
isPrime = false;
break;
}
}
System.out.println("attempts: " + temp);
if (isPrime)
System.out.println(arr[i] + " is a Prime Number");
else
System.out.println(arr[i] + " is not a Prime Number");
}
}
至于退出程序,请将其放在更大的for
循环的开头:
if (arr[i] == 0) {
break;
}
您可以尝试使用此函数检查数字是否为素数:
private static boolean isPrime(int number) {
return java.math.BigInteger.valueOf(number).isProbablePrime((int) Math.log(number));
}
然后你可以遍历数组,用这个函数检查它的每个元素
我的程序版本:
public class Main {
public static void main(String[] args) {
try(java.util.Scanner sc = new java.util.Scanner(System.in)) { //use try-with-resources block to avoid resources leak
//filling an array
int[] ints = new int[sc.nextInt()];
//if program gets 0, it stops filling
for(int i = 0; i < ints.length; i++) {
int temp = sc.nextInt();
if(temp == 0) break;
ints[i] = temp;
}
//check
for(int i = 0; i < ints.length; i++)
if(ints[i] != 0) System.out.printf("%s is%s a prime number.\n", ints[i], isPrime(ints[i]) ? "" : "n't");
}
}
private static boolean isPrime(int number) { //Some maths
return java.math.BigInteger.valueOf(number).isProbablePrime((int) Math.log(number));
}
}
我建议您检查一下这个链接:检查int是否是prime Java
编写一个布尔函数,检查整数是否为素数。您不需要从输入框中创建O N^2算法。
第一步:检查一个整数,看它是否返回true(表示它是素数)
第二步:尝试随机数,看看它们是否也有效。
第3步:添加一个数组,看看数组的内容是否有素数。然后你可以打印出任何你喜欢的信息。
请参阅同一参考资料中的此示例以开始。https://onecompiler.com/java/3y2cxy9ea
简而言之,我再次在网上找到了这个任务: 从键盘上输入整数,检查是否是质数。当你输入0时,程序结束。 到目前为止,我编写了检查整数是否为素数的逻辑。主要的障碍是,我应该从一个字符串中读取几个整数,如果最后一个整数是0,则停止程序。因此,当我试图添加一个循环来迭代输入并检查整数是否为素数时,我的逻辑不起作用,它只返回1个整数,没有其他整数。
我正在尝试创建一个简单的程序来验证用户的输入是否为正整数。但是,在使用Scanner.hasNextInt()方法时遇到了一个问题。如果输入包含一个整数,比如“5个6”,我的程序将把6读入为一个整数。但是,我希望这样的语句无效,并提示用户只需要输入一个整数值。因此程序将输出“请输入整数值:”。 这就是我的程序的样子: 编辑:我理解next()与nextLine()之间的区别。然而,我的问题是实际仅
问题内容: 以编程方式检查PDF文件是否被完全扫描的最佳方法是什么?我确实可以使用iText和PDFBox。我可以检查pdf文件是否包含文本,并根据结果确定该文件是否为OCRed,但是此解决方案并非100%准确。我想知道是否还有另一种方法来解决这个问题。 如您所知,解决方案必须基于Java。 问题答案: 最好的选择是检查它是否包含文本,还查看它是否包含大的页面化图像或覆盖页面的大量平铺图像。如果您
问题内容: 如何检查Java整数是否为另一个数字的倍数?例如,if 是4的倍数。 问题答案: 使用余数运算符(也称为模运算符),该运算符返回除法的余数,并检查其是否为零:
在分离标记之前,我试图检查扫描仪是否有多个标记。我目前正在尝试使用扫描仪。hasNext()(我的扫描仪的名字是sc)。如果用户输入“string int”,那么我不想打印“enter age”或“enter grade” 目前,无论输入是什么,我的程序都会跳过if语句。如果我把它拿走!然后,即使输入是一行,这些行也会打印出来。他们似乎也打印后,下一个是我发现奇怪的。我将非常感谢您的帮助!