使用循环创建整数

import java.io.IOException;


public class Main {


    public static void main(String[] args) throws IOException {

        int number = 0;

        int keyValue = System.in.read();

        keyValue = keyValue - 48;

        number = number * 10 + keyValue;

        System.out.println(number);


        while(true) {

            keyValue = System.in.read();

            keyValue = keyValue - 48;

            number = number * 10 + keyValue;

            System.out.println(number);

            if(keyValue == 120) {

                number = number - 120;

                System.out.println(number);

                break;

            }

        }


        }


    }

我想从键盘获取整数值。减去48将使ASCII代码成为我在键盘上输入的值。


我不仅想在第一位数字中执行此操作,而且要使用while循环和if条件,在键盘上输入任何内容时都创建一个整数。


您认为问题出在哪里?请帮帮我。


潇湘沐
浏览 152回答 3
3回答

喵喔喔

您的代码的中断条件为时已晚:原始键值 - 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 键之前,您将不会获得输入。

慕运维8079593

您希望它一个接一个地打印还是在一行中打印。如果您希望它在一行中。希望您能从下面的代码片段中获得帮助:-public class Main {&nbsp; &nbsp; public static void main(String[] args) throws IOException {&nbsp; &nbsp; &nbsp; &nbsp; int number = 0;&nbsp; &nbsp; &nbsp; &nbsp; int keyValue = 0;&nbsp; &nbsp; &nbsp; &nbsp; /*int keyValue = System.in.read();&nbsp; &nbsp; &nbsp; &nbsp; keyValue = keyValue - 48;&nbsp; &nbsp; &nbsp; &nbsp; number = number * 10 + keyValue;&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(number);*/&nbsp; &nbsp; &nbsp; &nbsp; while (true) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; number =0;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; keyValue = System.in.read();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; keyValue = keyValue - 48;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(keyValue == -38){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (keyValue < 0 || keyValue > 122) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(" BREAK "+keyValue);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; number = number * 10 + keyValue;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.print(number);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}输出 :-11223312312334534555565556789789

温温酱

我不知道这是否是您要查找的,但是如果您尝试通过减去48值来创建ASCII to int,那么这里是正确的代码:&nbsp; &nbsp; public static void main(String[] args) throws IOException {&nbsp; &nbsp; Scanner sc = new Scanner(System.in);&nbsp; &nbsp; int number = 0;&nbsp; &nbsp; System.out.println("Please enter your ASCII code!");&nbsp; &nbsp; int keyValue = sc.nextInt();&nbsp; &nbsp; keyValue = keyValue - 48;&nbsp; &nbsp; number = number * 10 + keyValue;&nbsp; &nbsp; System.out.println(number);&nbsp; &nbsp; while (true) {&nbsp; &nbsp; &nbsp; &nbsp; number = 0;&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Please enter your ASCII code!");&nbsp; &nbsp; &nbsp; &nbsp; keyValue = sc.nextInt();&nbsp; &nbsp; &nbsp; &nbsp; keyValue = keyValue - 48;&nbsp; &nbsp; &nbsp; &nbsp; number = number * 10 + keyValue;&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(number);&nbsp; &nbsp; &nbsp; &nbsp; if (keyValue == 120) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; number = number - 120;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(number);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}例:当您输入48时,您将获得0,使用49,您将获得1 ...当您输入168时,循环中断,程序结束。我希望这对你有帮助。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java