1

我想在循环中读取 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

4 回答 4

2

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

于 2014-03-08T20:46:48.650 回答
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());
        }

      }
于 2014-03-08T20:42:22.720 回答
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);
   }
 }
于 2014-03-08T20:29:14.143 回答
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)语句。

于 2014-03-08T20:30:32.443 回答