Проблема в ваших утверждениях «если»:
if (isPrime = true) {
if (isPalindrome = true) {
Единственный знак «равно» - это присвоение, и значением этого является присваиваемое значение - что в этих случаях всегда верно.
Измените их, используя оператор двойного равенства:
if (isPrime == true) {
или, поскольку они являются логическими переменными, лучше просто использовать их напрямую:
if (isPrime) {
EDIT TO ADD: Кроме того, вы не назначаете результат вызова функций.В функции 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 + " ";
}
}
}