如何在java中为ReadKey使用bets(if)

如何在java中为ReadKey使用bets(if),java,Java,我是一名java初学者。我想建立一个程序,从用户那里得到一个数字,然后说它是素数还是素数 Java代码: import java.util.Scanner; import static java.lang.System.out; public class prime { public static boolean prime(int n) { for(int i = 2; i <n ; i++) { if(n % i

我是一名java初学者。我想建立一个程序,从用户那里得到一个数字,然后说它是素数还是素数

Java代码:

import java.util.Scanner;
import static java.lang.System.out;

public class prime
{
    public static boolean prime(int n)
    {
        for(int i = 2; i <n ; i++)
        {
            if(n % i == 0){
                return false;
            }
        }
        return true;
    }
    public static void main(String[]args)
    {
        Scanner input = new Scanner(System.in);
        out.println("enter a number: ");
        int x = input.nextInt();
        if(prime(x)){
            out.println(x + "is a prime number");
        }else{
            out.println(x + "isn't a prime number");
        }
    }
}
import java.util.Scanner;
导入静态java.lang.System.out;
公共类素数
{
公共静态布尔素数(int n)
{

对于(int i=2;i只需检查按下的键是否为y(是),如果是,则继续循环

static void main(String[] args)
{
    ConsoleKey response;
    
    do
    {
        Console.WriteLine("enter a number");
        int x = int.Parse(Console.ReadLine());
        
        if (prime(x)) {
            Console.WriteLine(x + " is a prime number");
        } else {
            Console.WriteLine(x + " isn't a prime number");
        }

        Console.Write("do you want to continue? [y/n] ");
        response = Console.ReadKey(false).Key;  
    }
    
    while (response == ConsoleKey.Y);
}

您不能直接将C#键盘按键检测映射到Java

另外,只能通过Java AWT/Swing GUI程序中的键侦听器来检查按下了哪个键。但是,您的程序是一个控制台程序,Java没有任何机制来检测控制台应用程序中按下了哪个键。有关更多信息,请参阅

现在,您可以读取某个按键产生的
字符串

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    boolean permit = true;
    while (permit) {
        // your existing code
        out.println("do you want to continue?");
        permit = input.next("y|Y").equalsIgnoreCase("y");
    }
}

我还纠正了素数方法

import java.util.Scanner;
import static java.lang.Math.abs;
import static java.lang.System.out;

public class Prime {
   public static boolean prime(int n) {
    for (int i = 2; i < n/2; i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    while (true) {
        try {
            out.println("enter a number: ");
            int x = Integer.parseInt(input.nextLine());
            if (prime(x)) {
                out.println(x + " is a prime number");
            } else {
                out.println(x + " isn't a prime number");
            }
        } catch (NumberFormatException e) {
            System.out.println("NumberFormatException");
        }
        out.println("do you want to continue");
        if (!input.nextLine().equals("Y")) break;
    }
  }
}
import java.util.Scanner;
导入静态java.lang.Math.abs;
导入静态java.lang.System.out;
公共类素数{
公共静态布尔素数(int n){
对于(int i=2;i
我想用Java构建它这不是一个真正的答案:(1)它不是Java代码,它是C#,(2)您刚刚将OP问题中的
while
循环替换为
do while
。此外,所有小于或等于1的整数都被程序视为素数。@JanezKuhar您的第一条评论不是真的。有趣的“更正”因为关于负数是否可以是素数有各种各样的观点(所有观点都是有效的)-看,是的,现在我不确定abs。但我想迭代足够了,直到我可以使用
I
而不是
I是的,我认为你是对的。在这两种情况下,我们都检查数字是否为偶数。加上1。
equalsIgnoreCase
将不再需要调用
toLowerCase
import java.util.Scanner;
import static java.lang.Math.abs;
import static java.lang.System.out;

public class Prime {
   public static boolean prime(int n) {
    for (int i = 2; i < n/2; i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    while (true) {
        try {
            out.println("enter a number: ");
            int x = Integer.parseInt(input.nextLine());
            if (prime(x)) {
                out.println(x + " is a prime number");
            } else {
                out.println(x + " isn't a prime number");
            }
        } catch (NumberFormatException e) {
            System.out.println("NumberFormatException");
        }
        out.println("do you want to continue");
        if (!input.nextLine().equals("Y")) break;
    }
  }
}