我如何打印单个索引?

时间:2013-10-19 01:51:55

标签: java loops for-loop substring

所以只是为了给一个小方向,我有这个任务,我应该打印出输入的反向。例如:如果有人输入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等,但我只是想使用子串。

2 个答案:

答案 0 :(得分:2)

String.substring(x)返回从位置x开始直到结束的整个字符串。 two-argument form 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));
}

答案 1 :(得分: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'