当前位置: 代码迷 >> Java相关 >> java初学者问个小问题,请帮个忙!
  详细解决方案

java初学者问个小问题,请帮个忙!

热度:124   发布时间:2009-09-27 21:01:34.0
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楼太麻烦了,就加个循环就差不多了
----------------解决方案--------------------------------------------------------
  相关解决方案