public int getInt(){
   String str = getString();
   int get = 0;
   boolean flag = true;
   while(flag){
     if(str.matches("\\d+")){
        return Integer.parseInt(str);
     }
   }
}
错误是没有返回值。我不知道是不是return 返回的是while()外面,而不是整个方法?求解!!!先谢。

解决方案 »

  1.   

    你的程序只有在程序执行进while 再执行进去那个if才会有返回值,但是java程序要求,如果方法要求有返回值必须在每条执行路径上都有返回值
      

  2.   

    LS说的是一个问题,加入你的str种没有数字呢?那么你的程序将是死循环!
      

  3.   

    确实, lz 应该在每条执行路径上 都写个return
      

  4.   


    public int getInt(){
    String str = getString();
    int get = 0;
    boolean flag = true;
    while(flag){
    if(str.matches("\\d+")){
    return Integer.parseInt(str);
    } else {
    flag = false;//解决当str中没有数字时出现的死循环问题
    }
    }
    return -1;//在str中没有数字时,返回-1
    }
      

  5.   

    public int getInt() throws IOException{
       String str = getString();
       boolean flag = true;
       int get = 0;
       while(flag){
         if(str.matches("\\d+")){
           get = Integer.parseInt(str);
           break;
         }else{
           System.out.println("输入不是数字,请重新输入");
           str = getString();
         }
      }
      return get;
    }
    在else中要是没有返回值怎么办呢?retuan不是直接返回数据到方法外面了吗?