当我将新单词与原始单词进行比较时,我遇到了问题。我想输入像“香蕉”这样的单词并将第一个字母写到最后,它应该拼写为“香蕉”。这两个词是平等的。如果我输入“狗”,它就变成了“dgo”。但是在我的代码中,如果我输入“banana”,它仍然显示它不相等。 Idk该做什么。
import java.util.Scanner;
public class Project9
public static void main(String [] args)
{
Scanner keyboard = new Scanner(System.in);
String word, afc, newWord;
String s="";
do
{
word=keyboard.next().toLowerCase();
int i =word.length()-1;
char firstLetter=word.charAt(0);
afc=word.substring(1);
newWord= afc+firstLetter;
for( ; i>=0; )
{
s += newWord.charAt(i--);
}
System.out.println(word + "," + s);
if (s.equals(word))
System.out.println("Words are equal.");
else
System.out.println("Words are not equal.");
}
while (!(word.equals("quit")));
}
}
答案 0 :(得分:1)
问题是你的代码用
反向打印单词for( ; i>=0; )
System.out.print(newWord.charAt(i--));
然后你将非反转版本与
进行比较newWord.equals(word)
我想你想要这样的东西:
String s = "";
for( ; i>=0; )
s += newWord.charAt(i--);
System.out.println(s);
if (s.equals(word))
...
答案 1 :(得分:0)
您正在比较香蕉和 ananab
除此之外,你正在为一项小任务做很多操作。
字符串操作不是一个好习惯,因为每次更改字符串时,它都会创建一个新的String对象。我已经为您的要求编写了代码,希望它有所帮助
当你需要多次操作时, char数组优于String
public static void main(String [] args)
{
Scanner keyboard = new Scanner(System.in);
String word, newWord;
do
{
word=keyboard.next().toLowerCase();
int i =word.length()-1;
char[] ca=new char[i+1];
ca[0]=word.charAt(0);
for( int j=1; i>0;j++ )
{
ca[j]=word.charAt(i--);
}
newWord= new String(ca);
System.out.println(word+","+newWord);
if (newWord.equals(word))
System.out.println("Words are equal.");
else
System.out.println("Words are not equal.");
}
while (!(word.equals("quit")));
}