向后打印字符串

时间:2014-03-15 22:54:25

标签: java string

我试图反向打印一个字符串。即。

hello world 

应该出现:

 dlrow olleh

但结果只显示了第一个单词的反转。即。

 olleh

有什么想法吗?

import java.util.Scanner;

public class test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);

        System.out.println("Input a string:"); 
        String s;
        s = input.next();

        String original, reverse = "";

        original = s;

        int length = original.length();

        for ( int i = length - 1 ; i >= 0 ; i-- )
            reverse = reverse + original.charAt(i);

        System.out.println("Reverse of entered string is: "+reverse);
        input.close();  
    }
}

8 个答案:

答案 0 :(得分:3)

使用input.next()仅存储变量中的下一个单词(仅#34; hello")。试试这个:

    System.out.println("Input a string:");
    String s;
    s = input.nextLine();

    System.out.println("entered: " + s);

答案 1 :(得分:1)

该行

  

S = input.next()

只会说一个字。

因此,为了获得全线' hello world',您必须使用nextLine()函数。

s = input.nextLine();

答案 2 :(得分:1)

您的scanner对象只通过input.next()方法返回下一个完整的令牌。当存在空白字符时,令牌被认为是完整的。如果您使用多个单词,请使用扫描仪的nextLine()方法获取完整输入。

答案 3 :(得分:1)

  new StringBuilder("hello world").reverse().toString();

可能更简单。

答案 4 :(得分:1)

使用s.nextline()而不是s.next()作为s.next()只读取第一个标记字符串

     Scanner sc= new Scanner(System.in);
    String s = sc.nextLine();
    System.out.println(new StringBuilder(s).reverse().toString());

答案 5 :(得分:0)

s = input.next()更改为s = input.nextLine()

答案 6 :(得分:0)

来自Scanner javadoc

  

public String next()

     

查找并返回此扫描仪的下一个完整令牌。一个   完整标记之前和之后是匹配的输入   分隔符模式。此方法可能在等待输入时阻塞   扫描,即使先前的hasNext()调用返回true。

令牌分隔符可能不是您所期望的(例如换行符)。

如果您希望程序读取用户输入的整行,您可能需要使用Scanner.nextLine(),它将读取用户输入的整行,或者Scanner.next(String delimiter),这将是允许您输入所需的标记分隔符。

答案 7 :(得分:-1)

我无法真正编写一些源代码,但可能尝试使用两种不同的输入。之后,将每个字符串添加到它自己的变量中。之后,将它们反转并将它们作为输出加在一起。