【问题标题】:actual and formal argument lists differ in length error [duplicate]实际参数列表和形式参数列表的长度错误不同[重复]
【发布时间】:2014-10-20 13:09:25
【问题描述】:

我目前正在开发一个程序,该程序可以告诉您用户输入的三角形类型、周长和面积。我目前收到错误“实际参数列表和形式参数列表的长度不同”,并且我已经尝试使用谷歌搜索解决方案,但我不太确定是什么导致了该错误。

import java.util.*;

public class TriangleTesterID8876 {
  public static void main(String[] args) {
    Triangle userTriangle = new Triangle();
    Scanner kb = new Scanner(System.in);

    System.out.println("==================================");
    System.out.println("  This program is designed for");
    System.out.println("  the user to input a triangle");
    System.out.println("     and calculate the area, ");
    System.out.println(" perimeter, and type of triangle");
    System.out.println("==================================");

    //Side 1
    System.out.println("Please input the first side.");
    double side1 = kb.nextDouble();
    userTriangle.setSide1(side1);

    //Side 2
    System.out.println("Please input the second side.");
    double side2 = kb.nextDouble();
    userTriangle.setSide2(side2);

    //Side 3 
    System.out.println("Please input the third side.");
    double side3 = kb.nextDouble();
    userTriangle.setSide3(side3);

    System.out.println(userTriangle.typeString());
  }
}

Triangle.java:

public class Triangle {
  private double mySide1;
  private double mySide2;
  private double mySide3;

  public String backHalf;


  public void setSide1(double side1) {
    mySide1 = side1;
  }

  public void setSide2(double side2) {
    mySide2 = side2;
  }

  public void setSide3(double side3) {
    mySide3 = side3;
  }

  public double getSide1() {
    return mySide1;
  }

  public double getSide2() {
    return mySide2;
  }

  public double getSide3() {
    return mySide3;
  }

  private boolean isValid() {
    if ((mySide1 < mySide2 + mySide3) && (mySide2 < mySide1 + mySide3) && (mySide3 < mySide1 + mySide2)) {
      return true;
    } else
      return false;
  }

  public boolean isEquilateral() {
    if ((mySide1 == mySide2) && (mySide2 == mySide3)) {
      return true;
    } else {
      return false;
    }
  }

  public boolean isIsoscelese() {
    if (mySide1 == mySide2 || mySide1 == mySide3 || mySide1 == mySide2) {
      return true;
    } else {
      return false;
    }
  }

  public boolean isScalene() {
    if (mySide1 != mySide2 && mySide2 != mySide1 && mySide2 != mySide3) {
      return true;
    } else {
      return false;
    }
  }

  public double perimeter() {
    return mySide1 + mySide2 + mySide3;
  }

  public double findArea() {
    double s = perimeter() / 2;
    return Math.sqrt(s * ((s - mySide1) * (s - mySide2) * (s - mySide3)));
  }

  public String toTypeString() {
    double perimeter = perimeter();
    double area = findArea();

    backHalf = mySide1 + " " + mySide2 + " " + mySide3 + ", a perimeter of " + perimeter + ", and an area of " + area + ".";
    return backHalf;

  }

  public String typeString(String output) {
    if (isValid() == true) {
      if (isEquilateral()) {
        output = "This is an equilateral triangle with sides " + backHalf;
        return output;
      } else if (isIsoscelese()) {
        output = "This is an isosceles triangle with sides " + backHalf;
        return output;
      } else if (isScalene()) {
        output = "This is a scalene triangle with sides " + backHalf;
        return output;
      }
    } else
      output = "Please input a valid triangle.";
    return output;

  }
}

【问题讨论】:

  • 你的编译器没有告诉你这些问题发生在哪里吗?
  • 我不知道您为什么使用带有lang-js 的代码 sn-ps,但 Java 不是 JavaScript。

标签: java


【解决方案1】:

您使用单个字符串参数声明了 typeString(),但您正在调用它 - userTriangle.typeString() - 没有任何参数。

看来您应该删除该参数:

改变:

public String typeString(String output) {

public String typeString() {
    String output = null;
    ....
}

【讨论】:

    【解决方案2】:

    typeString() 接受一个字符串作为参数。在你的情况下,你称它为空

    【讨论】:

      【解决方案3】:

      你的Triangle 类说typeString(String output) 应该有一个参数,但你这样使用没有参数。

      System.out.println(userTriangle.typeString());
      

      随便用

      System.out.println(userTriangle.typeString());
      

      作为

      System.out.println(userTriangle.typeString(output));
      

      将您的Triangle 类方法签名typeString(String output) 更改为typeString()

      【讨论】:

        猜你喜欢
        • 2018-05-08
        • 2016-05-31
        • 2013-10-04
        • 1970-01-01
        • 2014-05-13
        • 1970-01-01
        • 2022-10-07
        • 2014-04-06
        • 2019-08-10
        相关资源
        最近更新 更多