Я новичок в программировании, и одним из моих заданий является создание кода для числа в диапазоне от 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
}
}
Вам нужно научиться Отладке резиновых уток. Подсказка: какая очевидная ошибка в этом: if (user1 > range) System.out.println("A correct number was entered "); else if (user1 > range) ... ?
На самом деле, i * -1 НЕ обязательно переворачивает знак i. Попробуйте с Integer.MIN_VALUE.
Если оно отрицательное, просто отмените значение
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");
}
Совет: используйте абсолютное значение вместо хитрых времен -1.