int value;
while (true) {
  String input = readUserInput();
  try {
    value = Integer.parseInt(input);
    break;
  } catch (Exception e) {
    System.out.println("输入了非法的数字");
  }
}

解决方案 »

  1.   

    用正则表达式会更简单:
    1.只能输入数字和英文的:
    <input onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))">
    2.只能输入数字的:
    <input onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))">
    3.只能输入全角的:
    <input onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))">
    4.只能输入汉字的:
    <input onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))">
      

  2.   

    你可以扩展JTextField类,把其中的输入事件覆盖掉,可以这们可以对每一个输入字符进行检查,当输入非法字符时可以不响应用户输入,并发出警告声