如何通过Java中的两种方法运行变量

TBink:

我需要找到满足用两种不同方法设置的条件的系列中的数字。

我尝试过将添加变量primalpalindromes的语句移出main方法中的for循环,但这给了我一个比我要检查的数字序列还要大的数字。

public static void main(String[] args) {
    boolean isPrime = true;
    boolean isPalindrome = true;
    String primepalindromes = "";
    int j;

    for (j = 1; j <= 100; j++) {
        checkprime(isPrime, j);
        if (isPrime = true) {
            checkpalindrome(isPalindrome, j);
            if (isPalindrome = true) {
                primepalindromes = primepalindromes + j + " ";
            }
        }

    }
    System.out.println(primepalindromes);

}

private static boolean checkprime(boolean isPrime, int j) {

    int temp = 0;

    for (int i = 2; i <= j / 2; i++) {
        temp = j % i;
        if (temp == 0) {
            isPrime = false;
            break;
        }
    }
    return isPrime;

}

private static boolean checkpalindrome(boolean isPalindrome, int j) {
    int r, sum = 0, temp;

    temp = j;
    while (j > 0) {
        r = j % 10;
        sum = (sum * 10) + r;
        j = j / 10;
    }
    if (temp == sum) {
        isPalindrome = false;
    }

    return isPalindrome;

}

该代码应该返回符合两个方法标准的集合系列中的所有数字,但只给出该系列中的所有数字。

拉克拉曼:

问题出在您的“ if”语句中:

if (isPrime = true) {

if (isPalindrome = true) {

单个“等于”符号是一个赋值,其值就是被赋值的值-在这种情况下,该值始终为true。

更改它们以使用双等于运算符:

if (isPrime == true) {

或者,由于这些是布尔变量,因此最好直接使用它们:

if (isPrime) {

编辑添加:另外,您没有分配调用函数的结果。在函数中,Java不会更改作为参数传入的原始类型的值,这意味着您具有:

boolean checkprime(boolean isPrime, int j)

并说:

checkprime(someIsPrimeVariable,j);

将值分配给isPrime不会更改调用者提供的变量的值(即someIsPrimeVariable不会更改)。

因此,放弃isPrime参数,而只使用返回值,所以:

isPrime = checkprime(int j);

因此您的代码将变为:

for (j = 1; j <= 100; j++) {
    isPrime = checkprime(j);
    if (isPrime) {
        isPalindrome = checkpalindrome(j);
        if (isPalindrome) {
            primepalindromes = primepalindromes + j + " ";
        }
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章