摄氏和华氏温度的用户输入验证

时间:2018-12-06 02:53:35

标签: java validation input character letter

首先,感谢任何提供帮助的人。其次,请记住我是新手(如我的代码haha所示)。

我只是想让它完成用户输入验证工作。应该验证空气温度,单位和风速。不管我输入什么,它都告诉我该单位无效。我在阅读键盘输入部分上做了一些奇怪的事情吗?
这是我的程序输出的内容(示例用户输入以粗体显示):

  
      
  • 风寒计算程序。
  •   
  • 输入气温,然后输入   那个单位。例如,华氏温度为25 F,摄氏温度为25C。
  •   
  • 气温: 25 F
  •   
  • 输入风速(以英里每小时为单位)。
  •   
  • 风速: 10
  •   
  • 单位无效。
  •   
  • 未计算风寒:总错误= 1
  •   
  • Wind Chill程序已完成。
  •   
  • 成功建立(总时间:53秒)
  •   

此外,我还没有尝试过此部分,但是我想使单元不区分大小写。我可以使用.toLowerCase()或.toUpperCase()来做到这一点,对吗?我只想确保我走的方向正确。

下面的链接是分配要求和该程序应该执行的操作的示例。如果您不想(当然),则不必查看它们,但是我添加了它们,以防万一我不能很好地解释自己。

  1. Detailed program specs
  2. Code skeleton of program specs
  3. Sample program output

这是我到目前为止所拥有的:

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 :(得分:0)

您写错了检查设备的条件。 unit != 'C' || unit != 'F'将在unit == 'F'时返回true,因为条件(unit != 'C')之一为true。如果任一表达式为true,则OR运算符(||)将返回true。

要解决此问题,只需使用AND运算符(&&),以便如果该单位不等于CF,则该单位无效。

因此条件应为unit != 'C' && unit != 'F'