编程计算图形的面积。
程序可以计算圆形、长方形、正方形的面积,运行时先输入图形的类型(1表示圆形、2表示长方形、3表示正方形),然后,判断用户输入图形的类型,对圆形输入半径,对长方形输入长和宽,对正方形输入边长,
以上参数的数据类型均为整型。
计算面积后将其显示出来,要求结果保留两位小数,PI设为3.14即可。
输入分为两部分,第一个数字是 1 表示圆形,2 表示矩形,3 表示正方形,然后是计算面积所需的相应参数。
要求对每个测试实例,在单独一行中输出图形的面积。 如果用户输入的图形类型不合法,给出错误提示:“Invalid Data!”。
我的解决代码是:
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int a = in.nextInt();
if(a==1){
int b= in.nextInt();
System.out.printf("%.2f",3.14*b*b);
}
else if(a==2) {
double b= in.nextDouble();
double c = in.nextDouble();
System.out.printf("%.2f", b*c);
}
else if(a==3) {
Double b= in.nextDouble();
System.out.printf("%.2f", b * b);
}
else{
System.out.print("Invalid Data!");}
}
}
虽然我完成了这个题目。但如果输入一部分数据却得不出正确结果让我感到自己技术的匮乏:
如果输入3 2 2,程序输出4.00。
这样是不对的,我在老师的带领下尝试了in.close(),但是不成功。它该如何在输入3 2 2的时候输出Invalid Data!呢?我解决不了,只有把问题公布了,有解答的可以私聊或者加我微信13778097887,我可以给感谢费5元。
你这里有几个错误
1.人家要求输入的都是整型,没必要使用
Double
2.你这是各小的demo,
Scanner
是否关闭,没有影响3.你没有确定好你的输入方式,是一行全输入,还是逐行输入
Scanner
是阻塞式的,由用户来决定是否结束,应用程序只能选择阻塞读取或者丢弃,不能决定用户的下一步行为。Scanner
默认是空格分隔的,支持单行空格分隔输入和逐行回车确认输入你的程序在逐行输入没有问题是因为你放弃了后续的读取,用户还没反应过来,程序结束了
在单行有问题是因为
next
系列函数都是按照空格分开,逐个将输入给你的,你无法预知全部的输入,仅读取了自己需要的长度下面的改进代码是两种方式,你自己选择吧