gpt4 book ai didi

java - java中如何通过两种方法运行一个变量

转载 作者:行者123 更新时间:2023-11-29 04:08:19 25 4
gpt4 key购买 nike

我需要在一个系列中找到满足以两种不同方法设置的标准的数字。

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) {

单个“等号”是一个赋值,其值是被赋值的值——在这些情况下始终为真。

将它们更改为使用双等号运算符:

if (isPrime == true) {

或者,因为这些是 boolean 变量,所以最好直接使用它们:

if (isPrime) {

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

boolean checkprime(boolean isPrime, int j)

然后调用它,例如:

检查素数(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 + " ";
}
}

}

关于java - java中如何通过两种方法运行一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56782572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com