我正在编写一个从一个文件中读取文本的程序,然后确定它是否是回文。一个问题是,它认为一切都是一个。这是我的代码:
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
有谁知道可能导致这种情况的原因?我正在按照我的书所说的去找出是否有什么是回文
我把一些东西看成是这样的: boolean 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没有被定义。
答案 0 :(得分:0)
while (inF.hasNext()){
input=inF.nextLine();
reversed = new StringBuffer(input).reverse().toString();
boolean isPalindrome;
int low = 0;
int high = input.length() - 1;
while (low < high) {
isPalindrome = true;
if (input.charAt(low) != input.charAt(high)) {
isPalindrome = false;
break;
}
low++;
high--;
}
在while循环中声明low
和high
个变量。
答案 1 :(得分:-1)
您的代码有两个问题:
boolean isPalindrome;
移到while()循环之外。if (isPalindrome = true){
。使用单个=您可以为变量赋值。因此,你的if语句总是如此。要比较两个必须使用的变量==:if (isPalindrome == true){
high = input.length() - 1;
在您的程序中始终为-1。此时,while() - 循环内部必须为high = 0;
和high = input.length() - 1;
,因此在每次运行时都会通过while() - 循环将其设置为length-1。low = 0;
。现在它对我来说很完美。