初学JAVA,遇到问题,关于system.in

jhlan 2008-04-16 03:19:33
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);
}
}




如上计算面积,算的结果不对,不知道为何,请大家帮忙 谢谢
...全文
331 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ysy__2008 2009-08-05
  • 打赏
  • 举报
回复
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);
}
}
la448578 2009-05-10
  • 打赏
  • 举报
回复
学到了,谢谢!
anqini 2008-04-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 natulist 的回复:]
我是初学者,对这个str.matches("\\d+")不太明白,谁能帮我解释一下,谢谢!
[/Quote]

"\\d+"表示一个或多个数字
findself 2008-04-19
  • 打赏
  • 举报
回复
学习学习!!!
natulist 2008-04-16
  • 打赏
  • 举报
回复
谢谢楼上的!
wuy13862574600 2008-04-16
  • 打赏
  • 举报
回复
正则表达式,“\\d”是表示匹配数字
那一整句就表示str字符串是否是“数字”字符串
natulist 2008-04-16
  • 打赏
  • 举报
回复
我是初学者,对这个str.matches("\\d+")不太明白,谁能帮我解释一下,谢谢!
ssqmnlin 2008-04-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 canuseemit 的回复:]
System.in是输入流,read方法读取的是asc码。
输入5×4实际上是计算他们的Asc码53*52
建议用java.util.Scanner封装一下System.in
然后用scanner.nextInt()取值
[/Quote]
kingssq 2008-04-16
  • 打赏
  • 举报
回复
顶1楼和4楼,jdk 1.5之后,对于初学者用4楼的方法可能更简单一点。
haoxiongok 2008-04-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bao110908 的回复:]
a=(int)System.in.read();

改成

a = System.in.read() - '0';
b = System.in.read() - '0';

就可以了。

直接强转时只是获得字符的 Unicode 码值,比如说你输出的是字符 4,强转后就变成数字 52 了,
只为 4 的 Unicode 码值是:U+0034

不过这样改还是有问题,只能是一位数字。

我帮你重新写一个吧。
[/Quote]
  • 打赏
  • 举报
回复
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;
}
}
canuseemit 2008-04-16
  • 打赏
  • 举报
回复
System.in是输入流,read方法读取的是asc码。
输入5×4实际上是计算他们的Asc码53*52
建议用java.util.Scanner封装一下System.in
然后用scanner.nextInt()取值
jhlan 2008-04-16
  • 打赏
  • 举报
回复
呵呵 谢谢了啊
刘彬彬 2008-04-16
  • 打赏
  • 举报
回复
想一楼学习!
  • 打赏
  • 举报
回复
a=(int)System.in.read();

改成

a = System.in.read() - '0';
b = System.in.read() - '0';

就可以了。

直接强转时只是获得字符的 Unicode 码值,比如说你输出的是字符 4,强转后就变成数字 52 了,
只为 4 的 Unicode 码值是:U+0034

不过这样改还是有问题,只能是一位数字。

我帮你重新写一个吧。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧