我想在循环中读取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中的新手。
答案 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
。该程序读取A
和enter
- 这是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)
语句。