读取控制台的用户输入
来源:优易学  2011-2-3 19:04:21   【优易学:中国教育考试门户网】   资料下载   IT书店

  3、不允许用户输入为空
  这就要用到 while 循环,当用户输入为空(没有输入就直接回车)的时候重新要求输入。下面是将 readUserInput 方法改造后的例子:
  /**
  *读取用户输入
  *
  *@paramprompt提示文字
  *@return用户输入
  *@throwsIOException如果读取失败
  */
  privatestaticStringreadUserInput(Stringprompt)throwsIOException{
  //先定义接受用户输入的变量
  Stringresult;
  do{
  //输出提示文字
  System.out.print(prompt);
  InputStreamReaderis_reader=newInputStreamReader(System.in);
  result=newBufferedReader(is_reader).readLine();
  }while(result.equals(""));//当用户输入为空的时候,反复提示要求用户输入
  returnresult;
  }
  为了更加灵活的判断,我们将 while 中的判断语句提取成一个单独的方法。然后整个代码变成这样:
  publicclassBasicInput{
  publicstaticvoidmain(String[]args){
  try{
  //先提示一段文字,然后等待用户输入
  Stringstr=readUserInput("请输入您的年龄:");
  System.out.println("您输入的是:"+str);
  }catch(IOExceptione){
  e.printStackTrace();
  }
  }
  /**
  *读取用户输入
  *
  *@paramprompt提示文字
  *@return用户输入
  *@throwsIOException如果读取失败
  */
  privatestaticStringreadUserInput(Stringprompt)throwsIOException{
  //先定义接受用户输入的变量
  Stringresult;
  do{
  //输出提示文字
  System.out.print(prompt);
  InputStreamReaderis_reader=newInputStreamReader(System.in);
  result=newBufferedReader(is_reader).readLine();
  }while(isInvalid(result));//当用户输入无效的时候,反复提示要求用户输入
  returnresult;
  }
  /**
  *检查用户输入的内容是否无效
  *
  *@paramstr用户输入的内容
  *@return如果用户输入的内容无效,则返回true
  */
  privatestaticbooleanisInvalid(Stringstr){
  returnstr.equals("");
  }
  }
  4、只允许用户输入数字
  本例要求的是输入用户年龄。这是一个整数。为了避免得到非法的值,我们需要进一步对内容进行判断。因为之前我们将内容判断这一步单独提取出来,所以我们只要修改 isInvalid 方法就行了。判断一个字符串是不是数字,用正则表达式是最简单的。下面是修改后的 isInvalid 方法:
  privatestaticbooleanisInvalid(Stringstr){
  returnstr.equals("")||!str.matches("d+");
  }
  str.matches("d+") 用来判断字符串是不是全是数字。
  到这里纵观整个代码,可以看得出来,Java 虽然在某些地方复杂,但只要稍加整理,我们仍然可以得到逻辑结构合理的代码。

上一页  [1] [2] 

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训