用解析int清空检查

时间:2017-02-01 12:07:51

标签: java

几天前,我发布了一个关于if/elsewhile 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;
    }
}

2 个答案:

答案 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()

的方法中捕获