实际和正式的参数列表长度差异
问题描述:
我目前正在研究一个程序,告诉你用户输入了什么类型的三角形,周长和面积。我目前收到错误“实际和正式的参数列表长度不一样”,并且我尝试过使用谷歌搜索解决方案,但我不太确定是什么导致了这个错误。实际和正式的参数列表长度差异
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;
}
}
答
你宣布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()
。
是不是你的编译器告诉你这些问题在哪里发生? – mkobit 2014-10-20 03:45:33
我不确定你为什么要用'lang-js'代码片断,但Java不是JavaScript。 – 2014-10-20 03:46:35