2

当我将新单词与原始单词进行比较时,我遇到了问题。我想输入像“banana”这样的单词并将第一个字母放在最后,它应该向后拼写为“banana”。这两个词是相等的。如果我输入“dog”,它就会变成“dgo”。但是在我的代码中,如果我输入“香蕉”,它仍然显示它不相等。不知道该怎么办。

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")));

}
}
4

2 回答 2

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))
  ...
于 2013-03-09T09:36:28.313 回答
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")));
}
于 2013-03-09T10:32:57.663 回答