【发布时间】:2014-05-14 08:08:09
【问题描述】:
我正在尝试编写一个程序,该程序接收三角形的不同边,检查错误以确保它们有效,然后使用 ArrayList 输出它们。
我希望它看起来像这样......
“三角形 t1 的周长是 24。”
"三角形 t2 的周长为 30"
我认为 ArrayList 是我的主要问题(可能还有更多问题)。下面,我只是尽力实现了ArrayList,但显然无法实现。另外,我将如何编写/更改我的 toString 函数,以便它还包含在 main 中创建的对象的名称(即 t1、t2 等)?
感谢收看!
import java.util.*;
public class Tri {
public static void main(String []args){
Triangle t1 = new Triangle(7, 5, 4);
Triangle t2 = new Triangle(9, 6, 1);
System.out.println(t1.perimeter());
System.out.println(t2.perimeter());
ArrayList<Triangle>allTriangles = new ArrayList<Triangle>();
}
public static double totalPerimeter( ArrayList<Triangle>a ){
System.out.println(Arrays.toString( a.toArray()));
for( int i = 0; i < a.length; i++){
System.out.println( a.perimeter[i]);
}
}
class Triangle{
public Triangle( double a, double b, double c ){
this.sideA = a;
this.sideB = b;
this.sideB = c;
if (checkSides() == true){}
}
public double getA(){
return sideA;
}
public double getB(){
return sideB;
}
public double getC(){
return sideC;
}
public Triangle setA( double a ){
sideA = a;
return this;
}
public Triangle setB( double b ){
sideB = b;
return this;
}
public Triangle setC( double c ){
sideC = c;
return this;
}
public String toString(){
return "Perimeter of triangle is " + perimeter;
}
public double perimeter(){
if (checkSides() == true)
perimeter = (sideA+sideB+sideC);
return perimeter;
}
private boolean checkSides(){
if (!(sideA+sideB>sideC) && (sideA+sideC>sideB) && (sideB+sideC>sideA)){
die("Not valid sides of triangle.");
return false;
}
else return true;
}
public void die( String msg ){
System.err.println( "\nFatal error: " + msg );
System.exit( 1 );
}
private double perimeter;
private double sideA;
private double sideB;
private double sideC;
}
【问题讨论】:
-
这有什么问题?你能说得更具体点吗?
-
抱歉,我的问题出在 totalPerimeter 函数中。长度和周长无法解析为字段。
-
我会推荐这样的迭代:
for(Triangle triangle : a){}in totalPerimeter。无需尝试将其作为数组使用。