gpt4 book ai didi

java - 未使用局部变量

转载 作者:行者123 更新时间:2023-12-01 07:10:22 24 4
gpt4 key购买 nike

我正在尝试测试输入的单词是否是回文(向前和向后拼写相同)。据我所知,它应该可以工作,但是 Eclipse 说“未使用局部变量 isPalindrome 的值”,但它已被使用。问题是,即使这个词不是回文,它也说它是。

import java.util.Scanner;

public class Palindrome {
public static void main(String[] args) {
String phrase;
char[] phraseLetters;
int endChar;
boolean isPalindrome;

Scanner input = new Scanner(System.in);
System.out.println("Enter a word or phrase.");
phrase = input.nextLine();
input.close();

phrase = phrase.toLowerCase();
phrase = phrase.replaceAll(" ","");
phraseLetters = phrase.toCharArray();

endChar = phraseLetters.length - 1;

for (int i = 0; i < phraseLetters.length; i++) {
if (phraseLetters[i] != phraseLetters[endChar]) {
isPalindrome = false;
} else {
isPalindrome = true;
endChar -= 1;
}
}

if (isPalindrome = true) {
System.out.println("This word or phrase entered is a palindrome.");
} else {
System.out.println("This word or phrase is not a palindrome.");
}
}
}

编辑:我已经尝试过 if 语句

    if (isPalindrome == true) 

    if (isPalindrome)

在这两种情况下,Eclipse 都会在该 if 条件下显示“局部变量 isPalindrome 可能尚未初始化”。

最终编辑:

此后我继续前进,并重写了这段代码,但是如果有人仍然查看此代码,我只是回去修复了我的原始代码。

我在代码开头初始化了isPalindrome:

Boolean isPalinddrome = True;

我将 for 循环条件更改为:

for (int i = 0; (i < phraseLetters.length) && (isPalindrome); i++)

我终于改变了if (isPalindrome = true)if (isPalindrome)

最佳答案

if (isPalindrome = true)应该是if (isPalindrome == true) (或者 if (isPalindrome) 更好!实际上这个错误是为什么不询问 someBoolean == true 是否是一种不好的风格的另一个很好的理由)

输入 if (isPalindrome = true)您再次分配值 true到变量isPalindrome 。由于您只是为其赋值,编译器会警告您未使用的变量

了解这一点也很高兴:

At run time, the result of the assignment expression is the value of the variable after the assignment has occurred. The result of an assignment expression is not itself a variable.

所以,当你这样做时if (isPalindrome = true)那么 if 条件总是满足。

关于java - 未使用局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15605079/

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