几天前,我发布了一个关于if/else
和while loops
的主题。
我已经进一步了,现在做了一个小程序来猜测一个数字。
我想实现一项功能来检查用户是否输入空白,但我似乎无法弄明白!
有没有人可以帮助我一点?我仍然是 JAVA 的早期初学者。
这是我目前的代码:
import java.util.Scanner;
import javax.swing.JOptionPane;
/**
*
* @author henluu
*/
public class Practice {
public static void main(String[] args) {
//create new scanner
Scanner input = new Scanner(System.in);
int raad = 0;
raad = Integer.parseInt(JOptionPane.showInputDialog("Guess the number"));
while (Practice.rn() != raad) {
JOptionPane.showMessageDialog( null, ("Your number is not the same as the random number"));
raad = Integer.parseInt(JOptionPane.showInputDialog("Guess the number"));
//empty check
if (raad == " ") {
Integer.parseInt(JOptionPane.showInputDialog("No Input"));
}
}
JOptionPane.showMessageDialog( null, ("You guesse dit right! The number was: ") + Practice.rn());
}
//method to generate random number
public static int rn() {
int random = (int) Math.floor((Math.random() * 10) + 1);
return random;
}
}
答案 0 :(得分:0)
由于您正在学习我不会向您展示标准库解决方案,而是一个独立于库的解决方案,允许您掌握一些逻辑点进行检查。
请参阅以下代码中的注释。
public boolean isNumeric(String input) {
// First trim input of trailing spaces
input = input.trim();
// test on 0 length
if(input.length == 0) {
return false;
}
// Loop through all characters to test
// if they are valid
for(char c : input.toCharArray()) {
if (!Character.isDigit(c)) return false;
}
return true;
}
然后你可以这样打电话。
if(this.isNumeric(raad)) {
// your code here
}
此外,了解单一责任原则。
您的代码中存在一些严重缺陷。我建议你也在code review上发布它,以便获得一些有用的指示。
答案 1 :(得分:0)
重点是:JOptionPane正在向您返回字符串。
您可以执行以下操作:
private int fetchIntFromString(String userInput) {
if (userInput.isEmpty()) {
throw new IllegalArgumentException("input must not be empty");
}
return Integer.parseInt(userInput);
}
用作:
try {
raad = fetchIntFromString(JOptionPane.show...
} catch (Exception e) {
... give some error message
换句话说:当用户给出一个数字时,它只是变成一个数值并返回。如果用户输入为空或无法解析为数字,则抛出异常;需要在调用fetchIntFromString()