作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Java 新手,一周前才刚刚开始。
我正在尝试编写一个程序,要求用户输入“a”、“b”和“c”的选择以及小时数。
我设法完成了所有这些,但问题是:
当用户输入 a.b 和 c 以外的其他字母时,程序继续运行。
如果用户输入的小时值超过“24”,则程序仅执行“if”语句的第一部分。
下面是我的代码。
import java.util.*;
import javax.swing.*;
public class PetSelectionHw
{
public static void main(String[] args) throws Exception
{
String user_input="";
String NumberOfHours="";
int hours= 0;
System.out.println("a) House");
System.out.println("b) Apartment");
System.out.println("c) Dormitory");
Scanner User_Selection = new Scanner (System.in);
user_input = User_Selection.next();
char aChar = user_input.charAt(0);
if(aChar == 'a'){
//System.out.println("Selection is " + user_input);
} else if(aChar == 'b'){
//System.out.println("Selection is " + user_input);
} else if(aChar == 'c'){
//System.out.println("Selection is " + user_input);
} else if(aChar == 'd' || aChar == 'z'){
JOptionPane.showMessageDialog(null, "Wrong Input");
}
NumberOfHours = JOptionPane.showInputDialog(null,"Enter number of hours spent at home");
hours = Integer.parseInt(NumberOfHours);
if(hours > 24 && hours < 0){
JOptionPane.showMessageDialog(null, "Incorrect input of hours");
} else if (aChar == 'a' && hours >= 18){
JOptionPane.showMessageDialog(null, "Pot bellied pig");
} else if (aChar == 'a' && hours >= 10 && hours <= 17){
JOptionPane.showMessageDialog(null, "Dog");
} else if (aChar == 'a' && hours < 10){
JOptionPane.showMessageDialog(null, "Snake");
} else if (aChar == 'b' && hours >= 10){
JOptionPane.showMessageDialog(null, "Cat");
} else if (aChar =='b' && hours < 10){
JOptionPane.showMessageDialog(null, "Hamster");
}else if (aChar =='c' && hours >= 6){
JOptionPane.showMessageDialog(null, "Fish");
}else if (aChar =='c' && hours < 6){
JOptionPane.showMessageDialog(null, "Ant Farm");
}
}
}
最佳答案
您想使用else
:
if(aChar == 'a') {
System.out.println("Selection is " + user_input);
} else if(aChar == 'b') {
System.out.println("Selection is " + user_input);
} else if(aChar == 'c') {
System.out.println("Selection is " + user_input);
} else { // anything that is not 'a', 'b' or 'c'
OptionPane.showMessageDialog(null, "Wrong Input");
}
您甚至可能想考虑使用 switch
使用 default
情况,或更简单(imo):
if(aChar == 'a' || aChar == 'b' || aChar == 'c') { System.out.println("Selection is " + user_input); }
else { OptionPane.showMessageDialog(null, "Wrong Input"); }
对于第二个问题,您应该在这里使用 ||
(OR) 而不是 &&
(AND):
if(hours > 24 || hours < 0)
JOptionPane.showMessageDialog(null, "Incorrect input of hours");
关于java - 验证输入。我究竟做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37524929/
Feel free to skip straight to TL/DR if you're not interested in details of the question 简短的序言: 我最近决定
我一直在阅读 A Tour of Go学习Go-Lang到目前为止一切顺利。 我目前在 Struct Fields类(class),这是右侧的示例代码: package main import "fm
Last time I got confused顺便说一下PowerShell急切地展开集合,基思总结了它的启发式如下: Putting the results (an array) within a
我是一名优秀的程序员,十分优秀!