Диапазон числа от 0 до 100 от пользователя

Я новичок в программировании, и одним из моих заданий является создание кода для числа в диапазоне от 0 до 100; если число отрицательное, я должен преобразовать отрицательное в положительное. Я пробовал много способов решить эту проблему, но не смог. Если кто-нибудь может объяснить, как решить эту проблему, это было бы здорово.

    System.out.print("Enter a number between 0 to 100: ");
    Scanner input = new Scanner(System.in);
    int range = input.nextInt();
    
    // Display the user result 
    if (user1 > range) 
        System.out.println("A correct number was entered "); 
    else if (user1 > range) 
        System.out.println("An incorrect number was entered"); 
    else 
    {
    System.out.print("The number range " + range + " needs to be positive "); 
    System.out.print(range * -1); // If the number is negative convert to positive
    }
        
}

Совет: используйте абсолютное значение вместо хитрых времен -1.

TheHappyBee 17.02.2023 00:31

Вам нужно научиться Отладке резиновых уток. Подсказка: какая очевидная ошибка в этом: if (user1 > range) System.out.println("A correct number was entered "); else if (user1 > range) ... ?

Stephen C 17.02.2023 00:53
Math.abs
Basil Bourque 17.02.2023 00:57

На самом деле, i * -1 НЕ обязательно переворачивает знак i. Попробуйте с Integer.MIN_VALUE.

Stephen C 17.02.2023 00:58
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
4
57
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Если оно отрицательное, просто отмените значение

if (range < 0) {
  range = -range;
}
Ответ принят как подходящий

Вот чего вам не хватает:

ваше неточное наименование переменной "диапазон", скорее всего, сбивает вас с толку

Я думаю, вы имели в виду, что user1 будет пользовательским вводом, а не переменной «диапазон». Здесь он преподаст вам очень важный урок, который рано или поздно усвоят все программисты: называйте свои переменные так, чтобы вы могли их понять.

для более описательного имени переменной я переименую user1 в user_input

int user_input = input.nextInt(); 

который изменяет ваш код на

    if (user_input > range) {
        System.out.println("A correct number was entered "); 
    }
    else if (user_input > range) {
        System.out.println("An incorrect number was entered"); 
    }
    else 
    {
        System.out.print("The number range " + user_input + " needs to be positive "); 
        System.out.print(user_input * -1); // If the number is negative convert to positive
    }

Я также добавил скобки для удобства чтения и правильного форматирования.

исходя из этого, кажется, что под диапазоном здесь вы имели в виду диапазон от 0 до 100, который устанавливает проблема, что дает

    if (user_input > 0) {
        System.out.println("A correct number was entered "); 
    }
    else if (user_input > 100) {
        System.out.println("An incorrect number was entered"); 
    }
    else 
    {
        System.out.print("The number range " + user_input + " needs to be positive "); 
        System.out.print(user_input * -1); // If the number is negative convert to positive
    }

Наконец-то у нас есть работающий, красивый код.

Для последнего штриха я рекомендую использовать абс, чтобы изменить знаки для лучшего понимания. Который изменяет на

        if (user_input > 0) {
            System.out.println("A correct number was entered "); 
        }
        else if (user_input > 100) {
            System.out.println("An incorrect number was entered"); 
        }
        else 
        {
            System.out.print("The number range " + user_input + " needs to be positive "); 
            System.out.print(Math.abs(user_input)); // If the number is negative convert to positive
        }

Теперь мы закончили :)

Я бы переписал это как:

int minInclusive = 0;
int maxInclusive = 100;
Scanner input = new Scanner(System.in);

System.out.print("Enter a number between " + minInclusive + " and " + maxInclusive + " inclusive: ");    
int number = Math.abs(input.nextInt()); // number is now POSITIVE    
if (number >= minInclusive && number <= maxInclusive) {  // COMPOUND BOOLEAN EXPRESSION!
    System.out.println("A correct number was entered "); 
}
else {
    System.out.println("An incorrect number was entered"); 
}

Другие вопросы по теме