在java中读单个字符

时间:2015-01-02 08:15:10

标签: java

public class pattern7 {
    public static void main(String args[])
        throws java.io.IOException{

        char c;

        do
        {
            System.out.print("*");
            System.out.println("\ndo you want more");
            c=(char)System.in.read();
        }while(c=='y');
    }
}

上面的代码应该打印*,只要我按'y'但它不会这样做。它让用户只输入一次选择。我知道这背后的原因,因为它使用“输入”作为其第二个值。但我不知道如何使它工作。建议我正确执行相同操作的代码

3 个答案:

答案 0 :(得分:1)

将输入键按下作为新角色。因此捕获该按键添加另一个读取命令。

    do
    {
        System.out.print("*");
        System.out.println("\ndo you want more");
        do {
            c=(char)System.in.read();
        } while (Character.isWhitespace(c));
    } while (c=='y');

答案 1 :(得分:0)

如果' y'字符将始终后跟一个输入,只需始终阅读整行,并检查它是否只包含' y'字符:

选项1:BufferedReader

您可以将InputStreamReaderBufferedReader结合使用,以获得用户输入的完整行。之后,您检查它不是null,只包含' y'。

try {
    // Get the object of DataInputStream
    InputStreamReader isr = new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(isr);
    String line = "";
    while ((line = br.readLine()) != null && line.equals("y") ) {
        System.out.print("*");
        System.out.println("\ndo you want more?");
    }
    isr.close();
} catch (IOException ioe) {
    ioe.printStackTrace();
} 

选项2:扫描仪

使用java.util.Scanner类:

可以实现与上述相同
Scanner scan = new Scanner(System.in);
scan.nextLine(); // reads a line from the console. Can be used instead of br.readLine();

答案 2 :(得分:0)

您可以使用扫描仪执行此操作。这是我的代码 -

public class pattern7 {
    public static void main(String args[])
        throws java.io.IOException{

        char c;
        Scanner reader = new Scanner(System.in);
        do
        {
            System.out.print("*");
            System.out.println("\ndo you want more");
            c=reader.next().charAt(0);
        }while(c=='y');
    }
}