0

所以只是给一个小方向,我有这个任务,我应该打印出输入的反面。例如:如果有人输入 dylan,它会打印出 nalyd。我还应该使用 for 循环和子字符串来完成此操作。

这是我的代码:

    Scanner kb = new Scanner (System.in);
    String name;
    System.out.println("What is your name?");
    name = kb.next();
    int x = name.length();
    for (name.substring(x,x); x>-1; x-=1)
    {
        System.out.print(name.substring(x));
    }

这将打印出“nanlanylanDylan”,但显然这不是我想要的。只是寻找一种方法来解决这个问题,我知道我可以使用其他方法,如 charAt 等,但我试图只使用子字符串。

4

2 回答 2

2

String.substring(x)返回从位置 x 开始直到结束的整个字符串。两个参数的形式 String.substring(begin, end)是你需要去掉一个字符。您还应该最初将 x 减 1 以使其在范围内。循环的固定版本:

int x = name.length() - 1;
for (name.substring(x,x); x>-1; x-=1)
{
    System.out.print(name.substring(x, x + 1));
}

顺便说一句,for 循环初始化中的额外name.substring(x,x);内容并没有做任何事情。循环的固定和整理版本:

for (int x = name.length() - 1; x >= 0; x--)
{
    System.out.print(name.substring(x, x + 1));
}
于 2013-10-19T02:01:58.393 回答
1

如果我们只是对一个字符进行子串化,则子串可以像 charAt() 一样工作。为此,我们需要获取我们想要的当前字母的位置,并将其子串出来。

String name;
for (int i = name.length() - 1; i >= 0; i--) {
    System.out.print(name.substring(x, x+1));
}

注意 substring() 的第一个参数是inclusive, substring() 的第二个参数是exclusive,所以我们只得到一个带参数的字符(x, x+1)

String name = "John";
name.substring(0, 1); //returns 'J'
于 2013-10-19T02:01:52.063 回答