【发布时间】:2014-12-21 19:02:44
【问题描述】:
我正在尝试创建一个程序来读取用户输入并存储它,然后计算多边形的面积。当我尝试编译它时,它给了我一个错误,即.toString 是非静态的。
import java.util.Scanner;
class regularpoTest {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
boolean finished = false;
double s;
double n;
double area;
//starts loop to record data
do {
s =0;
n =0;
System.out.println("Enter the side length, or anything else to quit: ");
s = in.nextDouble();
in.nextLine();
if (in.hasNextDouble()) {
System.out.println("Enter number of sides");
n = in.nextDouble();
area = (s*s*n)/(4*Math.tan(Math.PI/n));
} else {
finished = true;
}
} while(!finished);
//This prints out the student details
System.out.println(regularpo.toString());
}
}
public class regularpo {
private double side;
private double numberOf;
private double area;
public regularpo(double side, double numberOf){
side = 0;
numberOf = 0;
area = 0;
}
public double getSide(){
return side;
}
public double getNumberOf(){
return numberOf;
}
public String toString(){
return ("area = " + area+ " side length "+side+ " number of sides "+numberOf);
}
}
【问题讨论】:
-
你缺少一个正则po的实例。
-
按照惯例,类名以大写字母开头。
-
System.out.println(regularpo.toString());显然regularpo是类名,而不是对象引用。toString是一个实例方法,这意味着您必须提供regularpo的 instance 才能使用它。而且您似乎没有在任何地方创建regularpo的实例,所以没有其他东西可以使用。 -
而且,正如 Eliot 所说,类名应该以 UpperCase 字母开头,而变量名应该以 lowerCase 开头。如果您遵守此约定,其他人将更容易理解您的代码。