向后拼写单词

时间:2013-03-09 09:24:25

标签: java

当我将新单词与原始单词进行比较时,我遇到了问题。我想输入像“香蕉”这样的单词并将第一个字母写到最后,它应该拼写为“香蕉”。这两个词是平等的。如果我输入“狗”,它就变成了“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")));

}
}

2 个答案:

答案 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")));
}