我应该使用System.in.read()
读取用户输入,将其保存到char
或int
变量中,并以相反的顺序输出用户输入。只要用户未输入"#"
您对如何做到这一点有想法吗?示例代码:
public static void main(String[] args) {
int inChar;
System.out.println("Input:");
try {
inChar = System.in.read();
System.out.print("Output: ");
System.out.println(inChar); // I only get numbers here
} catch (IOException e) {
System.out.println("Error reading from user");
}
}
答案 0 :(得分:0)
此任务有两个问题。
如何读取用户输入直到按下'#'以及如何反转char数组(字符串)。
检查一下
public static void main(String[] args) throws IOException {
String chars = "";
char inChar = 0;
System.out.println("Enter Character and press Enter: ");
while (inChar!='#') {
inChar = (char)System.in.read();
if (inChar=='\n'){
continue;
}
chars += inChar;
}
System.out.println("Input: " + chars);
System.out.print("Output: ");
for (int i=chars.length()-2; i>=0; i--){
System.out.print(chars.charAt(i));
}
}
编辑:谢谢@DevilsHnd。用System.in.read()代替扫描仪更新的代码。
在while循环中,代码读取用户输入,直到按下“#”键为止。除非您使用GUI(Swing,awt)或JNI C ++库,否则Java无法读取按键。因此,当按下Enter键时,代码会读取用户输入。
如果用户输入#,则循环中断。对于所有其他字符,该字符将添加到最终字符串中。由于System.in.read()还会读取换行(\ n),因此代码不会将它们添加到最终字符串中。
对于第二个问题,代码将最后一个String的长度进行多次迭代,并从最后一个字符串开始打印字符。
请注意,迭代从位置长度2处的字符开始,这是因为String的最后一个字符为'#',因此不应在输出中打印该字符。