import java.io.*;
public class character
{
public static void main(String args[])throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("enter two characters");
char a=(char)br.read();
char b=(char)br.read();
System.out.println("1."+a);
System.out.println("2."+b);
}
}
这是我的代码,由于某种原因,它拒绝输入第二个字符并直接跳转到输出。有人可以帮忙吗?
答案 0 :(得分:2)
这是因为br.read()
被使用了两次。
您基本上是从控制台读取两个字符。
因此,当您输入第一个字符后输入(which terminates read())
时,请说出a
,您将获得以下输出:
a='a';
b=ENTER KEY
如果输入除输入以外的任何内容,则会在b
中输入该字符。
答案 1 :(得分:1)
我认为可能是在第二个字母中读取回车键,但不要引用我的话。你可以尝试:
char a=(char)br.readLine().charAt(0);
char b=(char)br.readLine().charAt(0);
是..它将输入键的值(13)分配给char b:
如果你这样做,你会看到它:
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("enter two characters");
char a=(char)br.read();
char b=(char)br.read();
int c = (int)b;
System.out.println("1."+a);
System.out.println("2."+c);
<强>输出:强>
输入两个字符
一
1.A
2.13
http://www.theasciicode.com.ar/ascii-control-characters/carriage-return-ascii-code-13.html
答案 2 :(得分:1)
您编写的代码将从控制台获取前两个字符。这包括空格或换行符。这意味着如果您输入a b
,则第一个字符将为a
,第二个字符将为空格。
答案 3 :(得分:1)
public class character {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("enter two characters");
char a = (char) br.read();
char b = (char) br.read();
int c=(int)b;
System.out.println("1." + a);
System.out.println("2." + c);
}
输入
输入两个字符 1
因此,当您按Enter键终止read()时,您将获得以下输出:
1.1 2.10
这里10来自换行的ASCII值
答案 4 :(得分:0)
你应该试试这个:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("enter two characters");
int count = 0;
char[] characters = new char[2];
while (count < 2) {
String line = br.readLine();
characters[count] = line.charAt(0);
count ++;
}
System.out.println(characters[0]);
System.out.println(characters[1]);
此代码将读取ENTER键并跳至下一行。这样您就可以输入两个用ENTER键分隔的字符。