在循环中读取字符

时间:2014-03-08 20:11:55

标签: java loops char system.in

我想在循环中读取char变量a,并在循环的每个步骤中将变量k递增。

这是java中的代码:

public class Hello {
  public static void main(String arg[]) throws IOException {
    int k, i;
    char a;
    k=0;
    for (i=0; i<=3; i++) {
      k++;
      a=(char) System.in.read();
      System.out.println(k);
    }
  }
}

这是结果:

A  //variable a
1
2
3
B  //variable a
4

我需要这个结果:

a  //variable a
1
c  //variable a
2
b  //variable a
3
y  //variable a
4

也许我需要一些其他的方法来读取循环中的CHAR(不是 SYSTEM.IN.READ()),但我是java中的新手。

4 个答案:

答案 0 :(得分:1)

试试这个:

static Scanner keyboard = new Scanner(System.in);

public static void main (String args[]) {
  int k = 0;
  String a;
  while(true){
      a = keyboard.nextLine();
      k++;
      System.out.println(k);
   }
 }

答案 1 :(得分:1)

  public static void main(String args[]) {
        int charCount = 0;
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext() && charCount++<=3)
        {
            System.out.println(sc.next());
        }

      }

答案 2 :(得分:1)

您仍然可以使用System.in.read方法 - 但在引入第一个字符后不按enter: 我认为上述答案可以解决您的问题。但是,我想解释一下为什么会发生这种情况:您可能会写A并按enter。该程序读取Aenter - 这是2个字符:\r\n - 因此,for循环在第一次迭代A,第二次\ r \ n和第三个\ n ....

答案 3 :(得分:0)

您可以使用Scanner类,它更可预测地消耗输入:

public static void main(String arg[]) throws IOException {
    int k, i;
    char a;
    k = 0;
    Scanner in = new Scanner(System.in);

    for (i = 0; i <= 3; i++) {
        k++;
        a = in.next().charAt(0);
        System.out.println(k);
    }
}

next()方法返回一个字符串,该字符串由用户键入的所有字符组成,直到他们按下该键。因此,通过一次键入一个字符(或首先键入所需的字符),next()返回的字符串将以该字符开头,因此调用charAt(0)将检索它。

请注意,没有理由在前4次(0,1,2和3)运行循环。您可以使用for语句替换while (true)语句。