Java 为什么我的方法在运行时重复 公共类回文时间{ 公共静态void main(字符串[]args){ userInt(); System.out.println(“回文素数小于”+userInt()+ “是:”; 对于(int i=0;i=10){ div*=10; } while(userInt()!=0){ intx=userInt(); int l=x/div; int r=x%10; 如果(l!=r) 返回false; x=(x%div)/10; div/=100; } 返回true; } 私有静态int userInt(){ 扫描仪s=新的扫描仪(System.in); System.out.print(“输入正整数:”); int userInt=s.nextInt(); 返回userInt; } }

Java 为什么我的方法在运行时重复 公共类回文时间{ 公共静态void main(字符串[]args){ userInt(); System.out.println(“回文素数小于”+userInt()+ “是:”; 对于(int i=0;i=10){ div*=10; } while(userInt()!=0){ intx=userInt(); int l=x/div; int r=x%10; 如果(l!=r) 返回false; x=(x%div)/10; div/=100; } 返回true; } 私有静态int userInt(){ 扫描仪s=新的扫描仪(System.in); System.out.print(“输入正整数:”); int userInt=s.nextInt(); 返回userInt; } },java,Java,是否有不同的方式获取用户输入?或者我能保持这样吗? 当它运行时,只会不断提示用户输入。按如下方式重新排列: public class PalindromicPrimes { public static void main (String[] args) { userInt(); System.out.println("The palindromic primes less than " + userInt() +

是否有不同的方式获取用户输入?或者我能保持这样吗?
当它运行时,只会不断提示用户输入。

按如下方式重新排列:

public class PalindromicPrimes {

    public static void main (String[] args) {
        userInt();
        System.out.println("The palindromic primes less than " + userInt() +
                           " are:");
        for (int i = 0; i <= userInt(); i++) {
            if (isPrime() && isPalindrome()) {
                System.out.println(i);
            }
        }

    }

    private static boolean isPrime() {
         if (userInt() == 2 || userInt() == 3) {
            return true;
        }
        if (userInt() % 2 == 0) {
            return false;
        }
        int sqrt = (int) Math.sqrt(userInt()) + 1;
        for (int i = 3; i < sqrt; i += 2) {
            if (userInt() % i == 0) {
                return false;
            }
        }
        return true;
    }

    private static boolean isPalindrome() {
        if (userInt() < 0)
        return false;
    int div = 1;
    while (userInt() / div >= 10) {
        div *= 10;
    }
    while (userInt() != 0) {
        int x = userInt();
        int l = x / div;
        int r = x % 10;
        if (l != r)
            return false;
        x = (x % div) / 10;
        div /= 100;
    }
    return true;
    }
    private static int userInt() {
        Scanner s = new Scanner(System.in);
        System.out.print("Enter a positive integer: ");
        int userInt = s.nextInt();
        return userInt;
    }
}
publicstaticvoidmain(字符串[]args){
//把它拿来,保存在这里!
int userValue=userInt();
System.out.println(“回文素数小于”+userValue+
“是:”;

对于(int i=0;i按如下方式重新排列:

public class PalindromicPrimes {

    public static void main (String[] args) {
        userInt();
        System.out.println("The palindromic primes less than " + userInt() +
                           " are:");
        for (int i = 0; i <= userInt(); i++) {
            if (isPrime() && isPalindrome()) {
                System.out.println(i);
            }
        }

    }

    private static boolean isPrime() {
         if (userInt() == 2 || userInt() == 3) {
            return true;
        }
        if (userInt() % 2 == 0) {
            return false;
        }
        int sqrt = (int) Math.sqrt(userInt()) + 1;
        for (int i = 3; i < sqrt; i += 2) {
            if (userInt() % i == 0) {
                return false;
            }
        }
        return true;
    }

    private static boolean isPalindrome() {
        if (userInt() < 0)
        return false;
    int div = 1;
    while (userInt() / div >= 10) {
        div *= 10;
    }
    while (userInt() != 0) {
        int x = userInt();
        int l = x / div;
        int r = x % 10;
        if (l != r)
            return false;
        x = (x % div) / 10;
        div /= 100;
    }
    return true;
    }
    private static int userInt() {
        Scanner s = new Scanner(System.in);
        System.out.print("Enter a positive integer: ");
        int userInt = s.nextInt();
        return userInt;
    }
}
publicstaticvoidmain(字符串[]args){
//把它拿来,保存在这里!
int userValue=userInt();
System.out.println(“回文素数小于”+userValue+
“是:”;
对于(int i=0;i请尝试以下方法:

public static void main (String[] args) {

    //get it and save it here!
    int userValue = userInt();
    System.out.println("The palindromic primes less than " + userValue +
                   " are:");
    for (int i = 0; i <= userValue; i++) {
        if (isPrime(userValue) && isPalindrome(userValue)) {
            System.out.println(i);
        }
    }
publicstaticvoidmain(字符串[]args){
int value=userInt();
System.out.println(“回文素数小于”+值+
“是:”;
对于(int i=0;i请尝试以下方法:

public static void main (String[] args) {

    //get it and save it here!
    int userValue = userInt();
    System.out.println("The palindromic primes less than " + userValue +
                   " are:");
    for (int i = 0; i <= userValue; i++) {
        if (isPrime(userValue) && isPalindrome(userValue)) {
            System.out.println(i);
        }
    }
publicstaticvoidmain(字符串[]args){
int value=userInt();
System.out.println(“回文素数小于”+值+
“是:”;

对于(int i=0;i您应该将
userInt()
的结果存储在变量中

public static void main (String[] args) {
    int value = userInt();
    System.out.println("The palindromic primes less than " + value +
                       " are:");
    for (int i = 0; i <= value; i++) {
        if (isPrime() && isPalindrome()) {
            System.out.println(i);
        }
    }

}
然后使用此变量引用用户键入的内容,而不是再次调用
userInt()

int typed = userInt();
System.out.println(“回文素数小于”+类型+
“是:”;
对于(int i=0;i
您应该将
userInt()的结果存储在变量中

public static void main (String[] args) {
    int value = userInt();
    System.out.println("The palindromic primes less than " + value +
                       " are:");
    for (int i = 0; i <= value; i++) {
        if (isPrime() && isPalindrome()) {
            System.out.println(i);
        }
    }

}
然后使用此变量引用用户键入的内容,而不是再次调用
userInt()

int typed = userInt();
System.out.println(“回文素数小于”+类型+
“是:”;
对于(int i=0;i
您一直在调用userInt()。这就是问题所在

我不明白你的逻辑。所以我没有修改代码。但是代码运行

System.out.println("The palindromic primes less than " + typed +
                       " are:");

for(int i = 0; i < typed; i++) ...
import java.util.Scanner;
公共类回文时间{
公共静态void main(字符串[]args){
intx=userInt();
System.out.println(“回文素数小于”+x+
“是:”;
对于(int i=0;i=10){
div*=10;
}
while(a!=0){
int x=a;
int l=x/div;
int r=x%10;
如果(l!=r)
返回false;
x=(x%div)/10;
div/=100;
}
返回true;
}
私有静态int userInt(){
扫描仪s=新的扫描仪(System.in);
System.out.print(“输入正整数:”);
int userInteger=s.nextInt();
返回userInteger;
}
}
请记住,不要对变量和函数使用相同的名称。在函数userInt()中,您使用了变量int userInt,以从扫描程序获取结果。这有时可能是一个递归调用。请小心。

您一直在调用userInt()。这就是问题所在

我不明白你的逻辑。所以我没有修改代码。但是代码运行

System.out.println("The palindromic primes less than " + typed +
                       " are:");

for(int i = 0; i < typed; i++) ...
import java.util.Scanner;
公共类回文时间{
公共静态void main(字符串[]args){
intx=userInt();
System.out.println(“回文素数小于”+x+
“是:”;
对于(int i=0;i=10){
div*=10;
}
while(a!=0){
int x=a;
int l=x/div;
int r=x%10;
如果(l!=r)
返回false;
x=(x%div)/10;
div/=100;
}
返回true;
}
私有静态int userInt(){
扫描仪s=新的扫描仪(System.in);
System.out.print(“输入正整数:”);
int userInteger=s.nextInt();
返回userInteger;
}
}

请记住,变量和函数的名称不要相同。在函数userInt()中,您使用了变量int userInt,以从扫描程序获取结果。这有时可能是一个递归调用。注意这一点。

因为您调用了userInt()为什么不只读取一次值呢?另外,每次调用
userInt()
时都要创建扫描程序实例,只需要一个
Scanner
实例。因为调用userInt(),为什么不只读取一次值呢?另外,每次调用
userInt()时都要创建扫描程序实例
您只需要一个
扫描仪
实例。