实际和正式的参数列表长度差异

问题描述:

我目前正在研究一个程序,告诉你用户输入了什么类型的三角形,周长和面积。我目前收到错误“实际和正式的参数列表长度不一样”,并且我尝试过使用谷歌搜索解决方案,但我不太确定是什么导致了这个错误。实际和正式的参数列表长度差异

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; 

    } 
} 
+0

是不是你的编译器告诉你这些问题在哪里发生? – mkobit 2014-10-20 03:45:33

+1

我不确定你为什么要用'lang-js'代码片断,但Java不是JavaScript。 – 2014-10-20 03:46:35

你宣布typeString()与单一字符串参数,但你调用它 - userTriangle.typeString() - 不带任何参数。

看起来你应该删除参数:

变化:

public String typeString(String output) { 

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

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

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

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

要么使用

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

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

OR

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