[英]How to read and output characters without using Array or String in Java?
我应该使用System.in.read()
读取用户输入,将其保存到char
或int
变量中,然后 output 以相反的顺序保存用户输入。 只要用户没有输入"#"
,我就应该阅读输入
你有一些想法如何做到这一点? 示例代码:
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");
}
}
这个任务有两个问题。
如何在按下“#”之前读取用户输入以及如何反转 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() 代替 Scanner 更新代码。
在 while 循环中,代码读取用户输入,直到按下“#”键。 Java 无法读取按键,除非您使用 GUI(swing、awt)或 JNI C++ 库。 因此,当按下 Enter 时,代码会读取用户输入。
如果用户输入 # 则循环中断。 对于所有其他字符,该字符将添加到最终字符串中。 由于 System.in.read() 还读取新行 (\n),因此代码不会将它们添加到最终字符串中。
对于第二个问题,代码迭代了最终字符串的长度,并从最后一个字符开始打印字符。
请注意,迭代从 position 长度为 2 的字符开始,这是因为字符串的最后一个字符是“#”,因此不应在 output 处打印。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.