【问题标题】:how to take char input before int input in java?java - 如何在java中的int输入之前获取char输入?
【发布时间】:2016-04-21 20:37:37
【问题描述】:
public class Pack1 {   
    public static void main(String ar[]) throws IOException { 
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      System.out.println("enter the character");
      char c=(char)br.read();
      System.out.println(c);
      System.out.println("enter the integer");
      long l=Integer.parseInt(br.readLine());
      System.out.println("long l="+l);

      System.out.println(c);
    }
}

【问题讨论】:

  • 那么你的问题到底是什么?
  • 我想先输入 char 再输入 int 但显示数字格式异常

标签: java string char inputstream


【解决方案1】:

假设用户在第一个问题上输入X并按Enter,然后在第二个问题上输入123并按Enter,这意味着输入流包含以下字符:

X  <CR>  1  2  3  <CR>

当您调用read() 时,您只会读取X。然后当您调用readLine() 时,您会读取&lt;CR&gt; 并返回一个空白字符串。

1 2 3 &lt;CR&gt; 在输入流中仍处于未读状态。

解决方案:在读取X 后调用readLine() 跳过该行的其余部分,使用readLine()X 读取为String,而不是作为char

仅供参考:这与人们在使用Scanner 并将对nextLine() 的调用与对其他nextXxx() 方法的调用(如nextInt())混合时遇到的问题完全相同。

【讨论】:

  • 所以每当我必须接受字符输入时,我必须将输入作为字符串,然后选择第一个字符..?
  • 您正在以面向行的方式提示用户,例如键入 answer,按 Enter,键入 answer,按 Enter,因此您也应该以面向行的方式阅读输入,特别是如果您一次只要求一个值。 --- 另外,请记住验证,例如如果用户在不输入任何内容的情况下按 Enter 键,那会怎样?或在您询问号码时输入abc
【解决方案2】:

改变这个:

long l=Integer.parseInt(br.readLine());

到:

long l=Long.parseLong(br.readLine(), 10); 

这是因为您试图将 String 转换为 Long 而不是 Integer 类型。

【讨论】:

    猜你喜欢
    • 2018-08-09
    • 2017-04-18
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 2011-07-14
    相关资源
    最近更新 更多