| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 900 人关注过本帖
标题:java初学者问个小问题,请帮个忙!
只看楼主 加入收藏
HF_VS_ZMR
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-4-8
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:7 
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 
2009-09-27 21:01
ygp_sfec
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:87
专家分:115
注 册:2009-9-8
收藏
得分:3 
这里应该用个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);}
   
2009-09-27 21:19
HF_VS_ZMR
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-4-8
收藏
得分:0 
回复 2楼 ygp_sfec
恩,你这样也可以。呵呵,我太不灵活了。
但是,如果按照我的结构,有什么命令可以实现我的要求吗?
2009-09-27 21:39
ygp_sfec
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:87
专家分:115
注 册:2009-9-8
收藏
得分:0 
至少据我所知不能,若要在输入错误是总是提示并等待输入,必须采用循环。
2009-09-28 08:50
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
收藏
得分:3 
介意还是使用循环来处理此事情
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);
        }
    }
 
}


C#超级群 74862681,欢迎大家的到来!
2009-09-28 18:03
ygp_sfec
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:87
专家分:115
注 册:2009-9-8
收藏
得分:0 
哈,5楼采用递归来代替循环,不过调用的开销增加了不少
2009-09-29 00:26
ygp_sfec
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:87
专家分:115
注 册:2009-9-8
收藏
得分:0 
没试过,不过我想既然用递归,也许 returnMain();可以直接用main(args);代替,后面的函数也不需要了
2009-09-29 00:28
kingyue
Rank: 2
等 级:论坛游民
威 望:1
帖 子:28
专家分:21
注 册:2009-6-17
收藏
得分:3 
感觉5楼太麻烦了,就加个循环就差不多了
2009-09-29 01:18
快速回复:java初学者问个小问题,请帮个忙!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027718 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved