名为雨捷的超神 发表于 2012-9-9 20:23:38

新手的编程(求改错和指点)

刚开始接触JAVA,作为大2的我在大一接触过C++,对编程有一点基础,这学期开始学java
第一周老师让我们编已知三角形的三条边求面积和周长的题目
下面是我写的代码,不知道对不对,求大神指点和改错
import java.util.Scanner;
import java.Math.*;
public class Tria
{
double a,b,c,p;
double setA(int x)
{
    a=x;
}
double setB(int y)
{
   b=y;
}
double setC(int z)
{
   c=z;
}


p=(a+b+c)/2;
double getArea()
{
      return Math.sqrt(p*(p-a)*(p-b)*(p-c));
}
double getC()
{
      return a+b+c;
}
}
class Task
{
public static void main(String args[])
{
System.out.println("请输入3个数确定三角形的三条边");
System.out.println("请确认任意两边之和大于第三边");
Tria triangle;
triangle=new Tria();
double x,y,z;
x=reader.nextDouble();
y=reader.nextDouble();
z=reader.nextDouble();
if(x+y>z)
{
if(x+z>y)
{
   if(z+y>x)
       {
         triangle.setA(x);
         triangle.setB(y);
         triangle.setC(z);
         double area=triangle.getArea();
         double c=triangle.getC();
         System.out.println("三角形的面积:"+area);
         System.out.println("三角形的周长:"+c);
      }
      else
      System.out.println("两边之和小于第三边");
   }
else
System.out.println("两边之和小于第三边");
}
else
System.out.println("两边之和小于第三边");
}
}

名为雨捷的超神 发表于 2012-9-9 20:49:36

中间漏了一句Scanner reader=new Scanner(System.in)忘记打了

ApfelZaft 发表于 2012-9-10 00:05:01

楼主你的程序有一个比较明显的错误,
x=reader.nextDouble();
y=reader.nextDouble();
z=reader.nextDouble();
此时xyz三个变量都是double型,你在之前定义确认三边长的function时要求的输入是整型,这样编译肯定会有问题。

ApfelZaft 发表于 2012-9-10 00:09:05

本帖最后由 ApfelZaft 于 2012-9-10 00:17 编辑

还有一个问题,你在Tria中声明的几个方法既然不是void型,那么应该要有返回值的…
最后是最严重的问题…主类在这里应该是public 反倒是你那个声明方法的类完全没有必要用public在这里。
之后应该没什么问题了,我试着编了一个正常编译运行通过了。
对了楼主。。import java.Math.*;这句也可以去除…因为Math实在lang包中的…你这样引用就不太合理了。
其实编程很多的诀窍都在java的API中,以后编写复杂程序是离不开API的~各种包和接口,方法的调用可以经常查看它~
页: [1]
查看完整版本: 新手的编程(求改错和指点)