import java.io.*; 
public class ComputeArea { /**
 * @param args
 */
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub

 
System.out.println("计算矩形面积"); 
System.out.print("请输入长:  "); 
int a,b; 
a=(int)System.in.read(); 
//System.in.read();
System.out.println("请输入宽"); 
System.in.skip(2); 
b=(int)System.in.read();
int c=a*b;
System.out.println("计算矩形面积是:"+c); 

}
如上计算面积,算的结果不对,不知道为何,请大家帮忙 谢谢 

解决方案 »

  1.   

    a=(int)System.in.read();改成a = System.in.read() - '0';
    b = System.in.read() - '0';就可以了。直接强转时只是获得字符的 Unicode 码值,比如说你输出的是字符 4,强转后就变成数字 52 了,
    只为 4 的 Unicode 码值是:U+0034不过这样改还是有问题,只能是一位数字。我帮你重新写一个吧。
      

  2.   

    System.in是输入流,read方法读取的是asc码。
    输入5×4实际上是计算他们的Asc码53*52
    建议用java.util.Scanner封装一下System.in
    然后用scanner.nextInt()取值
      

  3.   

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;public class Test1 {    public static void main(String[] args) throws IOException {
            System.out.println("## 计算矩形面积 ##");  
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int a = readNum("请输入长:", br);
            int b = readNum("请输入宽:", br);  
            int c = a * b; 
            System.out.println("矩形的面积是:" + c);  
        }
        
        private static int readNum(String prompt, BufferedReader br) throws IOException {
            int num = 0;
            while(true) {
                System.out.print(prompt);
                String str = br.readLine();
                if(str.matches("\\d+")) {                
                    num = Integer.parseInt(str.trim());
                    break;
                } else {
                    System.out.println("** 输出错误,请重新输入 **");
                }            
            }
            return num;
        }
    }
      

  4.   

    顶1楼和4楼,jdk 1.5之后,对于初学者用4楼的方法可能更简单一点。
      

  5.   

    我是初学者,对这个str.matches("\\d+")不太明白,谁能帮我解释一下,谢谢!
      

  6.   

    正则表达式,“\\d”是表示匹配数字
    那一整句就表示str字符串是否是“数字”字符串
      

  7.   

    import java.util.Scanner{
    public static void main(String args[]){Scanner input=new Scanner(System.in);System.out.println("计算矩形的面积");
    System.out.print("输入矩形的长: ");
    double  a=input.nextDouble();
    System.out.print("输入矩形的宽: ");
    double b=input.nextDouble();
    double c=a*b;
    System.out.println("矩形面积为:"+c);
    }
    }