我试图反向打印一个字符串。即。
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();
}
}
答案 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)
public String next()
查找并返回此扫描仪的下一个完整令牌。一个 完整标记之前和之后是匹配的输入 分隔符模式。此方法可能在等待输入时阻塞 扫描,即使先前的
hasNext()
调用返回true。
令牌分隔符可能不是您所期望的(例如换行符)。
如果您希望程序读取用户输入的整行,您可能需要使用Scanner.nextLine()
,它将读取用户输入的整行,或者Scanner.next(String delimiter)
,这将是允许您输入所需的标记分隔符。
答案 7 :(得分:-1)
我无法真正编写一些源代码,但可能尝试使用两种不同的输入。之后,将每个字符串添加到它自己的变量中。之后,将它们反转并将它们作为输出加在一起。