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'但它不会这样做。它让用户只输入一次选择。我知道这背后的原因,因为它使用“输入”作为其第二个值。但我不知道如何使它工作。建议我正确执行相同操作的代码
答案 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'字符:
您可以将InputStreamReader
与BufferedReader
结合使用,以获得用户输入的完整行。之后,您检查它不是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();
}
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');
}
}