为了账号安全,请及时绑定邮箱和手机立即绑定

使用循环创建整数

使用循环创建整数

潇湘沐 2022-08-03 15:18:10
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条件,在键盘上输入任何内容时都创建一个整数。您认为问题出在哪里?请帮帮我。
查看完整描述

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 键之前,您将不会获得输入。


查看完整回答
反对 回复 2022-08-03
?
慕运维8079593

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


查看完整回答
反对 回复 2022-08-03
?
温温酱

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时,循环中断,程序结束。


我希望这对你有帮助。


查看完整回答
反对 回复 2022-08-03
  • 3 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号