如何在Java中不使用数组或字符串的情况下读取和输出字符?

时间:2019-10-08 07:00:18

标签: java arrays string

我应该使用System.in.read()读取用户输入,将其保存到charint变量中,并以相反的顺序输出用户输入。只要用户未输入"#"

,我就应该阅读输入内容

您对如何做到这一点有想法吗?示例代码:

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");
        }
    }

1 个答案:

答案 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的最后一个字符为'#',因此不应在输出中打印该字符。