题目是这样的:若输入一个数,求圆的面积
若两个,求矩形面积
3个,三角形面积现在我只能用特殊符号‘#’判断是否到输入结束
我想改进一下,自动判断输入数字个数,然后调用相应函数求解
请大家指教,谢谢!我的代码import java.util.Scanner;
public class test
{
public static void main(String[] args)
{
Scanner cin=new Scanner(System.in);
String[] num=new String[3];
double[] w=new double[3];
int i=0;
boolean flag=false;
while(i<3)
{
num[i]=cin.next(); //因为找不到删除字符的函数,所以将#替换成‘\0’(即空字符)
if(num[i].indexOf('#')>0){num[i]=num[i].replace('#','\0');flag=true;} //判断是否有#,若有,标记,且将#删掉
w[i]=Double.parseDouble(num[i]);
i++;
if(flag)break;
}
switch(i)
{
case 1:System.out.println("圆面积为 "+ area(w[0]));break;
case 2:System.out.println("矩形面积为 "+ area(w[0],w[1]));break;
case 3:System.out.println("三角形面积为 "+ area(w[0],w[1],w[2]));break;
default:break;
} }
public static double area(double r){return(Math.PI * r * r);}
public static double area(double m,double n){return(m*n);}
public static double area(double a,double b,double c)
{
double p=(a+b+c)/2;
return(Math.sqrt(p*(p-a)*(p-b)*(p-c)));
}
}
若两个,求矩形面积
3个,三角形面积现在我只能用特殊符号‘#’判断是否到输入结束
我想改进一下,自动判断输入数字个数,然后调用相应函数求解
请大家指教,谢谢!我的代码import java.util.Scanner;
public class test
{
public static void main(String[] args)
{
Scanner cin=new Scanner(System.in);
String[] num=new String[3];
double[] w=new double[3];
int i=0;
boolean flag=false;
while(i<3)
{
num[i]=cin.next(); //因为找不到删除字符的函数,所以将#替换成‘\0’(即空字符)
if(num[i].indexOf('#')>0){num[i]=num[i].replace('#','\0');flag=true;} //判断是否有#,若有,标记,且将#删掉
w[i]=Double.parseDouble(num[i]);
i++;
if(flag)break;
}
switch(i)
{
case 1:System.out.println("圆面积为 "+ area(w[0]));break;
case 2:System.out.println("矩形面积为 "+ area(w[0],w[1]));break;
case 3:System.out.println("三角形面积为 "+ area(w[0],w[1],w[2]));break;
default:break;
} }
public static double area(double r){return(Math.PI * r * r);}
public static double area(double m,double n){return(m*n);}
public static double area(double a,double b,double c)
{
double p=(a+b+c)/2;
return(Math.sqrt(p*(p-a)*(p-b)*(p-c)));
}
}
import java.util.Scanner;
public class test {
public static void main(String[] args)
{
Scanner cin=new Scanner(System.in);
//这里是读入一行,这样改后在一行输入
//项输入的参数,用一个或多个空格分隔
//这里用nextLine来读取一行
String str = cin.nextLine();
//这是正则表达式,就是用一个或多个空格来分隔字符串
String[] temp = str.split("\\s+");
double d1,d2,d3;
switch(temp.length) {
case 1:
d1 = Double.parseDouble(temp[0]);
System.out.println("圆的面积为:" + area(d1));
break;
case 2:
d1 = Double.parseDouble(temp[0]);
d2 = Double.parseDouble(temp[1]);
System.out.println("矩形的面积为:" + area(d1,d2));
break;
case 3:
d1 = Double.parseDouble(temp[0]);
d2 = Double.parseDouble(temp[1]);
d3 = Double.parseDouble(temp[0]);
System.out.println("三角形的面积为:" + area(d1,d2,d3));
break;
default:
System.out.println("输入的参数个数不正确!");
System.out.println("用法:java test param1 param2 param3");
break;
}
}
public static double area(double r){return(Math.PI * r * r);}
public static double area(double m,double n){return(m*n);}
public static double area(double a,double b,double c)
{
double p=(a+b+c)/2;
return(Math.sqrt(p*(p-a)*(p-b)*(p-c)));
}
}在你的基础上简单的改写了一个,没有处理异常,所以输入的参数不是合法的数字的时候,会有问题!
d3 = Double.parseDouble(temp[2]);
上面的程序有个小错误,上面是改正后的!
{
public area(double r)
{
System.out.println("圆面积为"+Math.PI*r*r);
}
public area(double a,double b)
{
System.out.println("矩形面积为"+a*b);
}
public area(double a,double b,double c)
{
double p=(a+b+c)/2;
System.out.println("三角形面积为"+(Math.sqrt(p*(p-a)*(p-b)*(p-c))));
}}