A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 二月的雨 中级黑马   /  2014-12-28 13:13  /  1510 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

最近有一个小程序
源代码如下和输出结果如下:
/**
* 编写一个程序,提示用户读取两个整数,然后显示它们的和。
* 程序应该在输入不正确时提示用户再次读取数字。
*
*
*/

源代码如下:
import java.util.*;
public class NumberFormatException
{
public static void main(String[] args)
{
  Scanner input = new Scanner(System.in);
  
  System.out.print("Enter two integer numbers: ");
  
  boolean done = false;
  int number1 = 0;
  int number2 = 0;
  
  try
  {
   while (!done)
   {
    number1 = input.nextInt();
    number2 = input.nextInt();
    done = true;
   }
  }
  catch(Exception ex)
  {
   System.out.print("Incorrect input and re-enter two Integers: ");
   input.nextLine();
  }
  System.out.println("number1 and number2 is "+(number1+number2));
  input.close();
}
}
显示结果:
Enter two integer numbers: 2 6.3
Incorrect input and re-enter two Integers: number1 and number2 is 2
如果我想要输入的第一个整数2不参与计算
即,显示结果为:
Enter two integer numbers: 2 6.3
Incorrect input and re-enter two Integers: 2  5
number1 and number2 is 7
那么应该怎样修改代码呢?

7 个回复

倒序浏览
什么意思还是不太清楚。程序运行的还是ok的啊,如果不想输出num1+num2的结果,直接把它去掉不就行了吗
回复 使用道具 举报
不太懂楼主的意思啊!!!!!!!!!!!!
回复 使用道具 举报
一点没看懂楼主要表达什么
回复 使用道具 举报
意思是这样子的:如果输入的不全部是int型的数,那么能否只显示重新输入的提示,然后再输入,......,知道输入两个int型的数才显示结果。
回复 使用道具 举报
本帖最后由 赖永树 于 2014-12-29 20:52 编辑
  1.         public static void main(String[] args) {
  2.                    Scanner input = new Scanner(System.in);
  3.                   
  4.                    System.out.print("Enter two integer numbers: ");
  5.                   
  6.                    boolean done = false;
  7.                    int number1 = 0;
  8.                    int number2 = 0;

  9.                    while (!done)
  10.                    {
  11.                            try
  12.                            {
  13.                              number1 = input.nextInt();
  14.                              number2 = input.nextInt();
  15.                              done = true;
  16.                             }
  17.                            catch(Exception ex)
  18.                            {
  19.                             System.out.print("Incorrect input and re-enter two Integers: ");
  20.                             input.nextLine();
  21.                             continue;
  22.                            }
  23.                    }
  24.                    System.out.println("number1 and number2 is "+(number1+number2));
  25.                    input.close();

  26.         }
复制代码

把循环放在外面,异常出现时 continue ,算了,还是敲吧。

回复 使用道具 举报
寻觅 中级黑马 2014-12-31 10:54:30
7#
循环放在外面,这样在循环里面catch到了异常,就会抛出“Incorrect input and re-enter two Integers: ”,但是不会跳出循环,因为检测到异常之后代码执行不到done=true;这句,所以循环不会结束,进而不会执行下面的作和相加并输出的语句,只有在没有异常时,done=true才会执行,循环条件不符合,执行循环下面的代码。


  1. /**
  2. * 编写一个程序,提示用户读取两个整数,然后显示它们的和。
  3. * 程序应该在输入不正确时提示用户再次读取数字。
  4. *
  5. *
  6. */
  7. import java.util.Scanner;
  8. public class NumberFormatException
  9. {
  10. public static void main(String[] args)
  11.                                                                         {
  12.                    Scanner input = new Scanner(System.in);
  13.                   
  14.                    System.out.print("Enter two integer numbers: ");
  15.                   
  16.                    boolean done = false;
  17.                    int number1 = 0;
  18.                    int number2 = 0;

  19.                    while (!done)
  20.                    {
  21.                            try
  22.                            {
  23.                              number1 = input.nextInt();
  24.                              number2 = input.nextInt();
  25.                              done = true;
  26.                             }catch(Exception e)
  27.                                     {
  28.                                              System.out.print("Incorrect input and re-enter two Integers: ");
  29.                                              input.nextLine();
  30.                                     }
  31.                    }
  32.                    System.out.println(number1+"+"+number2 +" = "+(number1+number2));
  33.                    input.close();
  34.                                                                 }
  35. }
复制代码


回复 使用道具 举报
红楼 中级黑马 2014-12-31 18:26:06
8#
好多牛掰的大神啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马