在本练习中,我要反转一个字符串。我能够使它工作,虽然它不适用于空格。例如,Hello只会输出olleH。我尝试过像被注释掉的东西,却无法让它发挥作用。
import java.util.Scanner;
class reverseString{
public static void main(String args[]){
Scanner scan = new Scanner(System.in);
System.out.print("Enter a string: ");
String input = scan.next();
int length = input.length();
String reverse = "";
for(int i = length - 1; i >= 0; i--){
/*if(input.charAt(i) == ' '){
reverse += " ";
}
*/
reverse += input.charAt(i);
}
System.out.print(reverse);
}
}
有人可以帮忙解决这个问题,谢谢。
答案 0 :(得分:2)
您的reverse
方法是正确的,您正在呼叫Scanner.next()
,其中只读取一个字(下次打印input
)。对于您所描述的行为,请更改
String input = scan.next();
到
String input = scan.nextLine();
答案 1 :(得分:0)
您也可以这样初始化扫描仪:
Scanner sc = new Scanner(System.in).useDelimiter("\\n");
这样它就可以使用换行符来界定输入。
使用这种方法,您可以使用sc.next()来获取String中的整行。
<强>更新强>
正如documentation所说:
扫描程序使用分隔符模式将其输入分解为标记,分隔符模式默认匹配空格。然后可以使用各种下一种方法将得到的标记转换为不同类型的值。
从同一页面获取的示例:
扫描仪还可以使用空格以外的分隔符。此示例从字符串中读取几个项目:
String input = "1 fish 2 fish red fish blue fish"; Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*"); System.out.println(s.nextInt()); System.out.println(s.nextInt()); System.out.println(s.next()); System.out.println(s.next()); s.close();
打印以下输出:
1
2
红
蓝色
所有这些都是使用useDelimiter method。
制作的在这种情况下,您希望/需要阅读整行,那么您的useDelimiter
必须有一个允许读取整行的模式,这就是您可以使用\n
的原因,所以你可以这样做:
Scanner sc = new Scanner(System.in).useDelimiter("\\n");