сделать целое число с помощью цикла - PullRequest
0 голосов
/ 12 марта 2019
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 ]

1 голос
/ 12 марта 2019

В вашем коде условие прерывания было слишком поздно: number already messed up, multiplied by 10, added the 120 - 48. The исходное значение ключа - 48 == 120`.

Но я думаю, что вы хотели проверить на букву '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.

0 голосов
/ 12 марта 2019

Хотите, чтобы он печатался один за другим или в одну строку.Если вы хотите, чтобы это было в одной строке.Надеюсь, вы получите помощь из приведенного ниже фрагмента кода: -

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
0 голосов
/ 12 марта 2019

Я не знаю, если это то, что вы ищете, но если вы пытаетесь создать ASCII для int путем вычитания значения 48, здесь правильный код:

    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, цикл прерывается, и программа заканчивается.

Надеюсь, это полезно для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...