java初学者问个小问题,请帮个忙!
题目要求:从键盘输入三角形的三个边长,输出该三角形的面积。提示:若三边长为a、b、c,半周长为t,则面积s=Math.sqrt(t*(t-a)*(t-b)*(t-c))
代码:import java.util.*;
public class exp1_3{
public static void main(String args[]){
Scanner reader=new Scanner(System.in);
double a,b,c,t,s;
System.out.print("输入边a:");
a=reader.nextDouble();
System.out.print("输入边b:");
b=reader.nextDouble();
System.out.print("输入边c:");
c=reader.nextDouble();
if(a+b<=c||a+c<=b||b+c<=a){
System.out.println("不能构成三角形,请重新输入");
return;} 请问这里要用什么命令啊,谢谢了!
else{
t=(a+b+c)/2;
s=Math.sqrt(t*(t-a)*(t-b)*(t-c));
System.out.print("该三角形的面积:"+s);}
}
}
搜索更多相关的解决方案:
java
----------------解决方案--------------------------------------------------------
这里应该用个While循环:
while(a+b<=c||a+c<=b||b+c<=a){
System.out.println("不能构成三角形,请重新输入")
System.out.print("输入边a:");
a=reader.nextDouble();
System.out.print("输入边b:");
b=reader.nextDouble();
System.out.print("输入边c:");!
}
t=(a+b+c)/2;
s=Math.sqrt(t*(t-a)*(t-b)*(t-c));
System.out.print("该三角形的面积:"+s);}
----------------解决方案--------------------------------------------------------
回复 2楼 ygp_sfec
恩,你这样也可以。呵呵,我太不灵活了。但是,如果按照我的结构,有什么命令可以实现我的要求吗?
----------------解决方案--------------------------------------------------------
至少据我所知不能,若要在输入错误是总是提示并等待输入,必须采用循环。
----------------解决方案--------------------------------------------------------
介意还是使用循环来处理此事情
package text;
import java.util.*;
public class exp1_3 {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
double a, b, c, t, s;
System.out.print("输入边a:");
a = reader.nextDouble();
System.out.print("输入边b:");
b = reader.nextDouble();
System.out.print("输入边c:");
c = reader.nextDouble();
if (a + b <= c || a + c <= b || b + c <= a) {
System.out.println("不能构成三角形,请重新输入");
returnMain();
} // 请问这里要用什么命令啊,谢谢了!
else {
t = (a + b + c) / 2;
s = Math.sqrt(t * (t - a) * (t - b) * (t - c));
System.out.print("该三角形的面积:" + s);
}
}
public static void returnMain() {
Scanner reader = new Scanner(System.in);
double a, b, c, t, s;
System.out.print("输入边a:");
a = reader.nextDouble();
System.out.print("输入边b:");
b = reader.nextDouble();
System.out.print("输入边c:");
c = reader.nextDouble();
if (a + b <= c || a + c <= b || b + c <= a) {
System.out.println("不能构成三角形,请重新输入");
returnMain();
} // 请问这里要用什么命令啊,谢谢了!
else {
t = (a + b + c) / 2;
s = Math.sqrt(t * (t - a) * (t - b) * (t - c));
System.out.print("该三角形的面积:" + s);
}
}
}
----------------解决方案--------------------------------------------------------
哈,5楼采用递归来代替循环,不过调用的开销增加了不少
----------------解决方案--------------------------------------------------------
没试过,不过我想既然用递归,也许 returnMain();可以直接用main(args);代替,后面的函数也不需要了
----------------解决方案--------------------------------------------------------
感觉5楼太麻烦了,就加个循环就差不多了
----------------解决方案--------------------------------------------------------