首先,感谢任何提供帮助的人。其次,请记住我是新手(如我的代码haha所示)。
我只是想让它完成用户输入验证工作。应该验证空气温度,单位和风速。不管我输入什么,它都告诉我该单位无效。我在阅读键盘输入部分上做了一些奇怪的事情吗?
这是我的程序输出的内容(示例用户输入以粗体显示):
- 风寒计算程序。
- 输入气温,然后输入 那个单位。例如,华氏温度为25 F,摄氏温度为25C。
- 气温: 25 F
- 输入风速(以英里每小时为单位)。
- 风速: 10
- 单位无效。
- 未计算风寒:总错误= 1
- Wind Chill程序已完成。
- 成功建立(总时间:53秒)
此外,我还没有尝试过此部分,但是我想使单元不区分大小写。我可以使用.toLowerCase()或.toUpperCase()来做到这一点,对吗?我只想确保我走的方向正确。
下面的链接是分配要求和该程序应该执行的操作的示例。如果您不想(当然),则不必查看它们,但是我添加了它们,以防万一我不能很好地解释自己。
这是我到目前为止所拥有的:
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.");
}
}
答案 0 :(得分:0)
您写错了检查设备的条件。 unit != 'C' || unit != 'F'
将在unit == 'F'
时返回true,因为条件(unit != 'C'
)之一为true。如果任一表达式为true,则OR
运算符(||
)将返回true。
要解决此问题,只需使用AND
运算符(&&
),以便如果该单位不等于C
和F
,则该单位无效。
因此条件应为unit != 'C' && unit != 'F'