当前位置:编程学习 > JAVA >>

java输出结果的问题!~

import javax.swing.JOptionPane;
public class GuessNumber {
 public static void main(String[] args) {
  System.out.println("给你一个1~100之间的整数,请猜测这个数");
  int realNumber=(int)(Math.random()*100);
  int yourGuess=0;
  String str=JOptionPane.showInputDialog("输入你的猜测:");
  yourGuess=Integer.parseInt(str);
  while(yourGuess!=realNumber){
   if(yourGuess>realNumber){
    str=JOptionPane.showInputDialog("猜大了,再输入你的猜测:");
    yourGuess=Integer.parseInt(str);
      }
   else if(yourGuess<realNumber){
   str=JOptionPane.showInputDialog("猜小的,再输入你的猜测:");
   yourGuess=Integer.parseInt(str);       
   }
  }
           System.out.println(yourGuess+"\n"+"猜对了!");
 }

}

 

如果我按了确定就出现,,,,红色的,

给你一个1~100之间的整数,请猜测这个数
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
 at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
 at java.lang.Integer.parseInt(Integer.java:468)
 at java.lang.Integer.parseInt(Integer.java:497)
 at GuessNumber.main(GuessNumber.java:9)

 

可以编写出不输数字,也不出现这串红色的Error

补充:我的意思是,当按RUN时候出现窗口,不用输入数字按了确定,也不要出现

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
 at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
 at java.lang.Integer.parseInt(Integer.java:468)
 at java.lang.Integer.parseInt(Integer.java:497)
 at GuessNumber.main(GuessNumber.java:9)

如果单单出现“给你一个1~100之间的整数,请猜测这个数”这个就可以了。

追问:3个yourGuess=Integer.parseInt(str);也要替换成吗?但是3个替换成一直都是个窗口,关也关不了
答案:我对你的代码进行了部分修改,完全达到了你的要求。代码如下:

 

import javax.swing.JOptionPane;
public class num {
  public static void main(String[] args) {
    System.out.println("给你一个1~100之间的整数,请猜测这个数");
    int realNumber=(int)(Math.random()*100);
    int yourGuess=0;
    String str=JOptionPane.showInputDialog("输入你的猜测:");
    yourGuess=Integer.parseInt(str);
    while(yourGuess!=realNumber) {

/*下面的try语句开始捕捉异常,因为当输入为空或者输入的不是数字字符而是
  英文字符时,Integer.parseInt()方法就会产生NumberFormatException异常
  ,所以必须捕捉NumberFormatException异常*/

      try{
        if(yourGuess>realNumber) {
          str=JOptionPane.showInputDialog("猜大了,再输入你的猜测:");
          yourGuess=Integer.parseInt(str);
        }else if(yourGuess<realNumber) {
          str=JOptionPane.showInputDialog("猜小的,再输入你的猜测:");
          yourGuess=Integer.parseInt(str);
        }
/*下面的catch就是对捕捉到的NumberFormatException异常进行处理*/

      }catch(NumberFormatException e){

/*下面这条语句就是当点击窗口上的"取消"按钮时关闭窗口,退出程序。因为按
  下"取消"按钮时str得到的值为null,我们就知道按了"取消"按钮,可以退出程
  序了*/

        if(str==null) System.exit(0);
        System.out.println("你输入为空或者输入了非数字字符,请重新输入!");
      }
    }
  System.out.println(yourGuess+"\n"+"猜对了!");
 }
}

 

    关键部位我都在代码中用注释给予了详细说明,你可以直接把我的代码复制后编译运行。我代码中的说明文字由于已用了注释符,因此你在编译运行时可以保留我的这些说明文字,不必删除,不会影响到编译运行的。另外必须特别提醒一下,在运行这个程序时,第一次输入时一定要输入数字字符,不能输入英文字符或者什么也不输就按"确定"按钮,否则还是会引发异常。本来也想将这个异常一并解决,但这样一来代码就比较多了,不利于你理解我的代码是如何做的。所以就没有解决这个问题,也正好把它留给你作位作业,看你能不能解决它。当然,如果你无法解决的话,还可以来问我的。

    第二次输入时你就可以乱输了,只要不满足要求程序就会提示“你输入为空或者输入了非数字字符,请重新输入”。

    当你要结束程序时,直接点"取消"按钮就可以了。

    怎么样,解释的够清楚了吧。主要因为我不知道你的JAVA基础知识如何,所以只有尽可能地向你介绍清楚。不会嫌我啰嗦吧!


把这行yourGuess=Integer.parseInt(str);
替换成 


yourGuess = str == null || "".equals(str) ? 0 : Integer.parseInt(str);
这行

上一个:一套完整的JAVA项目包括哪些部分?
下一个:如何熟练java语言?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,