Проверка пользовательского ввода для градусов Цельсия и Фаренгейта - PullRequest
0 голосов
/ 06 декабря 2018

Прежде всего, спасибо всем, кто помогает.Во-вторых, пожалуйста, имейте в виду, что я новичок (как показано в моем коде, ха-ха).

Я просто пытаюсь заставить его выполнять проверку пользователя.Он должен проверять температуру воздуха, единицу измерения и скорость ветра.Независимо от того, что я печатаю, это говорит мне, что устройство недействительно.Я сделал что-то нехорошее с частью ввода с клавиатуры для чтения?
Это то, что выводит моя программа (пример пользовательского ввода выделен жирным шрифтом):

  • Программа расчета Wind Chill.
  • Введите температуру воздуха, за которой следует устройство.Например, 25 F для Фаренгейта или 25 C для Цельсия.
  • Температура воздуха: 25 F
  • Введите скорость ветра (в милях в час).
  • Скорость ветра: 10
  • Устройство недействительно.
  • Wind Chill не рассчитывается: общее количество ошибок = 1
  • Программа Wind Chill завершена.
  • BUILD SUCCESSFUL (общее время: 53 секунды)

Кроме того, я еще не пробовал эту часть, но хочу сделать регистр нечувствительным к регистру.Я бы сделал это с помощью .toLowerCase () или .toUpperCase (), верно?Я просто хочу убедиться, что я иду в правильном направлении.

Ссылки ниже являются требованиями к назначению и образцом того, что программа должна делать.Вам не нужно смотреть на них, если вы не хотите (конечно), но я добавил их на тот случай, если я не буду хорошо объяснять себя.

  1. Подробные спецификации программы
  2. Скелет кода программных спецификаций
  3. Пример вывода программы

И вот что у меня естьдо сих пор:

import java.util.Scanner;

public class WindChill2
{
  public static void main(String args[])
  {
        // Variables
        Scanner keyboard = new Scanner(System.in);
        double temp,                // Temperature
               windSpeed,           // Speed of wind in miles per hour
               windChill;           // Wind chill factor
        int    errorCount = 0;      // User entry errors
        char   unit;

        // Input
        System.out.println("Wind Chill calculation program.");

        System.out.println("Enter the air temperature followed by the unit. "
                         + "For example, 25 F for Fahrenheit or 25 C for " 
                         + "Celsius.");
        System.out.print("Air temperature: ");
        temp = keyboard.nextDouble();       // Store user entry in temp
        unit = keyboard.next().charAt(0);   // Store unit (C or F)
        System.out.println("Enter the wind speed (in miles per hour).");
        System.out.print("Wind speed: ");
        windSpeed = keyboard.nextDouble();  // Store user entry in windSpeed

        // Processing  
            if (temp < -40 || temp > 50)           // Validate temperature
            {
                System.out.println("The air temperature is invalid.");
                errorCount++;
            }

            if (unit != 'C' || unit != 'F')        // Validate unit
            {
                System.out.println("The unit is invalid.");
                errorCount++;
            }

            if (windSpeed < 0 || windSpeed > 50)   // Validate wind speed
            {
                System.out.println("The wind speed is invalid.");
                errorCount++;
            }

            if (errorCount > 0)                   // Error counter
            {
                System.out.println("Wind Chill not calculated: Total Errors = "
                                   + errorCount);
            } 
            else     // Calculate wind chill factor
            {
            windChill = 91.4 - (91.4 - temp) * (.478 + .301 * 
                        Math.sqrt(windSpeed) - .02 * windSpeed);
            System.out.print("The Wind Chill factor is ");
            System.out.printf("%.1f\n", windChill);
            }

        System.out.println("Wind Chill program is completed.");
  }
}

1 Ответ

0 голосов
/ 06 декабря 2018

Вы пишете неправильное условие для проверки устройства.unit != 'C' || unit != 'F' вернет истину, когда unit == 'F', потому что одно из условий (unit != 'C') истинно.Оператор OR (||) вернет true, если любое из выражений истинно.

Чтобы исправить это, просто используйте оператор AND (&&), чтобы единица была недействительной, еслионо не равно C И F.

Поэтому условие должно быть unit != 'C' && unit != 'F'

...