/*下列程序我希望当键入的不是数字的时候,能够打印出“您输入的不是数字”字样,该如何解决啊?*/
import java.io.*; 
public class Circle{
static double radius; 
static boolean check;
public Circle(double r){
if(r>=0){
check=true;
radius=r;
}
else
check=false;
}
double area(double radius){return Math.PI*radius*radius;} 
double perimeter(double radius){return 2*Math.PI*radius;} 
//主方法
public static void main(String[] args) 

System.out.println("请输入圆的半径:" +radius); 
BufferedReader br =new BufferedReader(new InputStreamReader(System.in),1); String str=null;
try{ 
str = br.readLine(); 

catch(IOException e){ 
System.out.println("您输入的不是数字.");
return; 
} radius=Integer.parseInt(str); 
Circle a=new Circle(radius); 
if(check){
System.out.println("圆的面积:" +a.area(radius)); 
System.out.println("圆的周长:" +a.perimeter(radius));
}
else
System.out.println("请确保输入的数据不为负数.");

解决方案 »

  1.   

    加入捕获异常:catch (NumberFormatException e1){ 
    System.out.println("您输入的不是数字."); 
    return; 
    } 修改你的整体代码:
    import java.io.*; 
    public class Circle{ 
    static double radius; 
    static boolean check; 
    public Circle(double r){ 
    if(r>=0){ 
    check=true; 
    radius=r; 

    else 
    check=false; 

    double area(double radius){return Math.PI*radius*radius;} 
    double perimeter(double radius){return 2*Math.PI*radius;} 
    //主方法 
    public static void main(String[] args) 

    System.out.println("请输入圆的半径:" +radius); 
    BufferedReader br =new BufferedReader(new InputStreamReader(System.in),1); String str=null; 
    try{ 
    str = br.readLine();
    radius=Integer.parseInt(str); 

    catch(IOException e){ 
    System.out.println("没有值"); 
    return; 

    catch (NumberFormatException e1){ 
    System.out.println("您输入的不是数字."); 
    return; 

    //radius=Integer.parseInt(str); 
    Circle a=new Circle(radius); 
    if(check){ 
    System.out.println("圆的面积:" +a.area(radius)); 
    System.out.println("圆的周长:" +a.perimeter(radius)); 

    else 
    System.out.println("请确保输入的数据不为负数."); 


      

  2.   

    if((str<'a'&&str>'z')||str<'A'&&str>'Z'){
    System.out.println("您输入的是数字."); }
    else{
    System.out.println("您输入的不是数字."); }
      

  3.   

    还可以再改进一下,将System.out.println("请输入圆的半径:" +radius); 改为System.out.println("请输入圆的半径:");就行了,否则radius被jvm赋初值为0.0,还没输入值就已经输出0.0了 
      

  4.   


    public class Test

       static public void main(String[] args) throws Exception
      { String s="12b";
       boolean isDig=true;
        for(int i=0;i<s.length();i++)
      {  if(Character.isDigit(s.charAt(i))!=true)
         isDig=false;
      }
         System.out.println(s+(isDig?"是数字":"不是数字"));
       } 
    }另外用异常NumberFormatException也可以进行判断
      

  5.   

    import java.io.*; 
    public class Circle{ 
    static double radius; 
    static boolean check; 
    public Circle(double r){ 
    if(r>=0){ 
    check=true; 
    radius=r; 

    else 
    check=false; 
    }          //radius此时
              //可能是0,因为if-else下来,radius不一定被赋值为:radius=r;
    double area(double radius){return Math.PI*radius*radius;}  
    double perimeter(double radius){return 2*Math.PI*radius;} 
    //主方法 
    public static void main(String[] args) 

    System.out.println("请输入圆的半径:" +radius); 
    BufferedReader br =new BufferedReader(new InputStreamReader(System.in),1); String str=null; 
    try{ 
    str = br.readLine(); 

    catch(IOException e){ 
    System.out.println("您输入的不是数字."); 
    return; 
    } radius=Integer.parseInt(str); 
    Circle a=new Circle(radius); 
    if(check){ 
    System.out.println("圆的面积:" +a.area(radius)); 
    System.out.println("圆的周长:" +a.perimeter(radius)); 

    else 
    System.out.println("请确保输入的数据不为负数."); 

      

  6.   

    以前写过一个类似的东西,楼主可在原main方法中加入如下语句:    Scanner sc = new Scanner(System.in);
        String input;
        boolean inputCheck;
        double score = 0;
        do
        {
          System.out.println("请输入一个数字: ");
          input = sc.next();
          inputCheck = validation(input);
          
          while (inputCheck == false)
          {
            System.out.println("您输入的不是数字,请输入一个数字: ");
            input = sc.next();
            inputCheck = validation(input);
          }
          
          if (inputCheck == true)
            score = Double.parseDouble(input);
          if (score > 100 || score < 0)
            System.out.println("Out of range.");
        } while (score > 100 || score < 0);
    其中调用判断输入字符串是否为数字的方法:public static boolean validation(String input)
      {
        char[] inputChar = input.toCharArray();
        boolean isValid = true;
        int decimalPtCount = 0;
        for (int i = 0; i < input.length() && isValid; i++)
        {
          if (inputChar[i] == '.')
            decimalPtCount++;
          if ((Character.isDigit(inputChar[i]) == false && inputChar[i] != '.') || decimalPtCount > 1)
            isValid = false;
        }
        return isValid;
      }