3 回答
TA贡献1735条经验 获得超5个赞
您的代码的中断条件为时已晚:原始键值 - 48 == 120'。number already messed up, multiplied by 10, added the 120 - 48. The
但我认为你想在字母上进行测试。'x'
while (true) {
keyValue = System.in.read();
if (keyValue == 'x') {
System.out.println(number);
break;
}
keyValue = keyValue - '0';
number = number * 10 + keyValue;
System.out.println(number);
}
但是,控制台 System.in 是行缓冲的,在按下 Enter 键之前,您将不会获得输入。
TA贡献1876条经验 获得超5个赞
您希望它一个接一个地打印还是在一行中打印。如果您希望它在一行中。希望您能从下面的代码片段中获得帮助:-
public class Main {
public static void main(String[] args) throws IOException {
int number = 0;
int keyValue = 0;
/*int keyValue = System.in.read();
keyValue = keyValue - 48;
number = number * 10 + keyValue;
System.out.println(number);*/
while (true) {
number =0;
keyValue = System.in.read();
keyValue = keyValue - 48;
if(keyValue == -38){
System.out.println();
}else {
if (keyValue < 0 || keyValue > 122) {
System.out.println(" BREAK "+keyValue);
break;
}
number = number * 10 + keyValue;
System.out.print(number);
}
}
}
}
输出 :-
1
1
2
2
3
3
123
123
345
345
5556
5556
789
789
TA贡献1752条经验 获得超4个赞
我不知道这是否是您要查找的,但是如果您尝试通过减去48值来创建ASCII to int,那么这里是正确的代码:
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int number = 0;
System.out.println("Please enter your ASCII code!");
int keyValue = sc.nextInt();
keyValue = keyValue - 48;
number = number * 10 + keyValue;
System.out.println(number);
while (true) {
number = 0;
System.out.println("Please enter your ASCII code!");
keyValue = sc.nextInt();
keyValue = keyValue - 48;
number = number * 10 + keyValue;
System.out.println(number);
if (keyValue == 120) {
number = number - 120;
System.out.println(number);
break;
}
}
}
例:
当您输入48时,您将获得0,使用49,您将获得1 ...当您输入168时,循环中断,程序结束。
我希望这对你有帮助。
添加回答
举报
