【发布时间】:2017-10-19 05:33:06
【问题描述】:
我正在编写一个程序,它从一个文件中读取文本,然后确定它是否是回文。一个问题是,它认为一切都是一。这是我的代码:
String input = "";
String reversed = "";
String answer = "";
int count = 0;
int low = 0;
int high = input.length() - 1;
outF.println("Palindrome Input String New String");
while (inF.hasNext()){
input=inF.nextLine();
reversed = new StringBuffer(input).reverse().toString();
boolean isPalindrome;
while (low < high) {
isPalindrome = true;
if (input.charAt(low) != input.charAt(high)) {
isPalindrome = false;
break;
}
low++;
high--;
}
if (isPalindrome = true){
answer = "yes";}
else{
answer = "no";}
outF.printf(" %-10s %-23s %s %n", answer, input.trim(), reversed.trim());
count++;
}
这是我的输出:
Palindrome Input String New String
yes STAR RATS STAR RATS
yes STAT TATS
yes LEVEL LEVEL
yes MALAYALAM MALAYALAM
yes Solos soloS
yes kaya ayak
yes Radar radaR
yes Regal lageR Regal lageR
yes Straw wartS Straw wartS
yes RSTUVWXYZXWVUTSR RSTUVWXZYXWVUTSR
yes DeifieD DeifieD
yes ABBA ABBA
yes mama anna mama amam anna amam
yes noel leon noel leon
yes Racecar racecaR
yes galleonnoelag galeonnoellag
end of program 16 strings were processed
有人知道这可能是什么原因吗?我正在按照我的书所说的来找出某件事是否是回文
我移动了一些东西,看起来像这样: 布尔 isPalindrome = true; 而(低
if (input.charAt(low) != input.charAt(high)) {
isPalindrome = false;
break;
}
low++;
high--;
}
if (isPalindrome ){
answer = "yes";}
else{
answer = "no";}
outF.printf(" %-10s %-23s %s %n", answer, input.trim(), reversed.trim());
count++;
它仍然无法正常工作。如果我让它保持原样,它会试图说 isPalindrome 没有定义。
【问题讨论】:
-
我对这个问题投了反对票,因为没有证据表明对此代码执行了任何调试。请edit您的问题向我们展示您的调试发现了什么,以及关于特定代码行的特定问题。请参阅:How to create a Minimal, Complete, and Verifiable example 和 How to Debug Small Programs。
-
查找变量范围。如果你在循环内定义一个变量,它在循环外是不可用的。
-
@JJJ 他在循环内定义了什么变量并试图在循环外使用?
-
提示:在
while (low < high)循环中放置一个System.out.println(),并显示一些重要的变量。你看到的——或者你没有看到的——可能会帮助你弄清楚为什么这不起作用。
标签: java palindrome