Цикл For не выдает никаких выходных данных в Java

#java #loops #for-loop

#java #циклы #цикл for

Вопрос:

Я очень новичок в разработке и пытаюсь написать небольшую программу, но, похоже, у меня не получается заставить этот цикл for работать:

 public class test {

    public static void main(String[] args){

    double desejadaT5 = Console.userInput("What is the desejada value?");

        for (double i = desejadaT5; i <= 0; i = i * 0.367)
            System.out.println("value of i is "   i);

    }
}
  

Вот класс, Console который я создал для получения пользовательских входных данных.

 import java.util.Scanner;

public class Console {

    public static double userInput(String prompt){

        Scanner scanner = new Scanner(System.in);
        double value;
        System.out.println(prompt);
        value = scanner.nextDouble();
        return value;
    }
}
  

Кто-нибудь может сказать мне, почему это не дает мне никакого результата? Я ожидал, что когда я введу, например, 333 в desejadaT5, я получу вывод типа: 333, 122, 44, 16, 5, 1.

Спасибо за помощь.

Комментарии:

1. Возможно, условие изначально равно false (если значение, введенное в desejadaT5, больше 0). Если значение больше нуля, то вы, вероятно, хотите, чтобы условие считывалось i >= 0; И это предполагает, что i = i * 0.367 постепенно уменьшит значение i до 0

2. Что такое Console ? System.Console не имеет userInput() элемента.

3. Какой ввод вы пытаетесь?

4. Запустите свою программу и введите значение<0, например -1.5, когда она ожидает ввода пользователем.

5. Просто измените условие на i >=1;

Ответ №1:

Если вы вводите входные данные как 333, то ваше условие цикла завершается ошибкой (i<=0), поскольку 333 не меньше или равно 0, и это выбрасывает вас из цикла

Комментарии:

1. о, спасибо, мистер Яш, теперь я понимаю. Большое спасибо :).

2. 1 но есть одна придирка: это не «выбрасывает вас из цикла». Тело цикла никогда не вводится, поскольку оно не проходит начальный тест.

3. Да, абсолютно. 🙂

Ответ №2:

Просто используйте scanner, как все.

 Scanner sc = new Scanner(System.in);
desejadaT5 = sc.nextDouble();