想法:使用pannter 类检查键盘输入是否是数字,不然反复提示,知道输入数字再比较大小。
问题:不能反复检查键盘输入
请给指导一下://比较两个输入数字的大小
//判断键盘输入限定只能是数字
//校验结束后,比较数字大小
/////////////////////
import java.io.*;
import java.util.regex.Pattern;
import java.util.Scanner;;public class CompareValue {
// 使用Pattern 判断输入是否是数字/////
////正则表达式判断///////////////////
public static boolean isNumeric(String str){
Pattern pattern=Pattern.compile("[0-9]*");
return pattern.matcher(str).matches();
}
public static boolean isNumeric1(String strt){ 
for(int i=strt.length();--i>=0;){ 
int chr=strt.charAt(i); 
if(chr<48 || chr>57) 
return false; 

return true; 

public static void main(String arg[]) throws IOException{
String firstnumber=null;
String secondnumber=null;
System.out.println("Please input first number");
try {
BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
firstnumber=br1.readLine();
Scanner scanner =new Scanner(br1);
while (!isNumeric1(firstnumber)){
System.out.println("It is not numeric!Input it again.");
scanner.next();
} catch (IOException e1){
System.out.print(e1.getMessage());}
//
        System.out.println("Please input second number");
        try {
            BufferedReader br2=new BufferedReader(new InputStreamReader(System.in));
            secondnumber=br2.readLine();
            }
            catch (IOException e2){
            System.out.print(e2.getMessage());
            }//字符串转为 数字类型才能比较实际的数字大小 //
//////////////////////////////////////
           if(Double.parseDouble(firstnumber)>Double.parseDouble(secondnumber)){
            System.out.println("from big to small :"+firstnumber+"\t"+secondnumber);
           }
           else{
            System.out.println("from big to small :"+secondnumber+"\t"+firstnumber);
           }
   }

}

解决方案 »

  1.   

    别的我没多改  看看main函数吧  看你结贴率好低啊  记得给俺个辛苦分吧  哇哈哈哈  另外你可以把里面扫描数字的封装成一个单独的方法
    public static void main(String arg[]) throws IOException{ 
    String firstnumber=null; 
    String secondnumber=null; 
    String flagToQuit = "C";
    while (flagToQuit.equalsIgnoreCase("c")){
    System.out.println("Please input first number"); 

    Scanner scanner = new Scanner(System.in); 

    firstnumber = scanner.next();
    while (!isNumeric1(firstnumber)){ 
    System.out.println("It is not numeric!Input it again."); 
    firstnumber = scanner.next(); 
    } System.out.println("Please input second number"); 
          
    secondnumber = scanner.next();
    while (!isNumeric1(secondnumber)){ 
    System.out.println("It is not numeric!Input it again."); 
    secondnumber = scanner.next(); 
    }
       
    if(Double.parseDouble(firstnumber)>Double.parseDouble(secondnumber)){ 
    System.out.println("from big to small :"+firstnumber+"\t"+secondnumber); 

    else{ 
    System.out.println("from big to small :"+secondnumber+"\t"+firstnumber); 
    }

    System.out.println("Press \"C\" or \"c\" to Continue, or other keys to quit.");

    flagToQuit = scanner.next(); 
    }
      

  2.   

    把这个main函数替换你的那个  就可以了 你之前的那个代码  验证第一个有问题  第二个就没有验证  
    而且用Scanner就直接扫描System.in就可以了  所以我在main方法里改得比较多
      

  3.   

    public class CompareNumberFromUserInput {    public static void main(String[] args) {
            double num1 = getNumber("请输入第一个数字:");
            double num2 = getNumber("请输入第二个数字:");
            System.out.println("结果:" + num1 + (num1 > num2 ? " 大于 " : (num1 == num2 ? " 等于 " : " 小于 ")) + num2);
        }    private static double getNumber(String prompt) {
            while (true) {
                System.out.print(prompt);
                try {
                    return Double.parseDouble(new BufferedReader(new InputStreamReader(System.in)).readLine());
                } catch (Exception e) {
                    System.out.println("您输入的不是数字。");
                }
            }
        }
    }