【问题标题】:My code outputs incorrectly我的代码输出不正确
【发布时间】:2015-09-21 12:44:33
【问题描述】:

我正在尝试编写一个程序,在给定所有三个边的值的情况下计算三角形的面积。当我使用运行程序文件运行程序时,我的区域显示为“0.0”

这是课程的完整代码(我也知道我为 setSides 和 triangle 做了相同的代码,但我的导师给了我们这个 shell,我不知道在里面放什么)

import java.util.Scanner; 
import java.lang.Math.*;

public class Triangle
{
 private int sideA;
 private int sideB;
 private int sideC;
 private double theArea; 
 private double s; 
 private double perimeter; 

 public Triangle()
 {
     sideA = 1;
     sideB = 1;
     sideC = 1;
 }

 public Triangle(int a, int b, int c)
 {
   sideA = (int) a;
   sideB = (int) b;
   sideC = (int) c;   
 }


 public void setSides(int a, int b, int c)
 {
   sideA = (int) a;
   sideB = (int) b;
   sideC = (int) c;
 }

 private double calcPerimeter()
 {
  double perimeter = sideA + sideB + sideC;
        return perimeter;
 }



private double calcArea()
 {
  double s = calcPerimeter() / 2;
  double theArea = (Math.sqrt(s * (s - sideA) * (s - sideB) * (s - sideC))); 
  return theArea;
 }

 public void print()
 {
    System.out.println("Area == " + theArea); 
 }
}

【问题讨论】:

  • @Daniel Stephens98:permiter 是什么??
  • @Daniel Stephens98:你也没有在构造函数中启动 S 变量,也没有在本地和类成员中使用 S ..
  • 另外,您的减号似乎是破折号

标签: java syntax-error invalid-characters


【解决方案1】:

我根据你的陈述做了一个系统。您使用的不是减法运算符。请解决这个问题。它会起作用的。还要定义permiter。

System.out.println((int)'–');

输出:
8211

【讨论】:

    【解决方案2】:

    您是否有可能从不是简单文本文档的文档中复制了一些源代码?

    如果是这样,那么您的问题是您的减号不是正确的字符。尝试在文本编辑器中重新输入它们。

    ED:此外,减号应该用空格包围。当我第一次看到这个时,它把我扔了。

    在您修改后的代码中,您可以对负数求平方根,这会使您处于非常糟糕的状态。

    【讨论】:

    • 这正是我要问的。看来这里有一些不稳定的格式。 +1 获取正确的格式提示 =)
    • @DanielStephens98 你没有定义周长。而不是你放的 'double s = calcPerimeter()/2;'
    • @TheThom 当我实例化“private double perimeter;”时它修复了错误,但现在当我继续使用跑步者运行程序时,我的区域刚刚出现“0.0”
    • @DanielStephens98 您是否尝试过我在您发表评论之前发布的修复?
    • @TheThom 我下载并使用了它,但我的输出仍然是“0.0”
    【解决方案3】:

    删除:

    private double perimeter; 
    

    然后改变:

     private double calcArea()
     {
      double s = perimeter / 2;
      double theArea = (Math.sqrt(s * (s - sideA) * (s - sideB) * (s - sideC))); 
      return theArea;
     }
    

    收件人:

     private double calcArea()
     {
      double s = calcPerimeter() / 2;
      double theArea = (Math.sqrt(s * (s - sideA) * (s - sideB) * (s - sideC))); 
      return theArea;
     }
    

    这就是正在发生的事情。您声明了一个名为 perimeter 的私有替身。稍后在代码中,您再次声明了一个名为 perimeter 的 double。当你这样做时,事情变得非常混乱!确保只声明同名的变量一次,然后引用它们。

    【讨论】:

    • 我继续更改代码,但我的输出仍然为“0.0”
    • 将 2 更改为 2.0?您正在使用 int 和 double 类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多