Java:已创建随机大小的数组,负责打印每个项目(不同形状),最后一个元素未完全打印
Java: Created array of random size, tasked to print each item (different shapes), last element doesn't fully print
这是我的driver
public class ShapeDriver
{
public static void main(String[] args)
{
//
// for (int i= 0; i < arr.length;i++)
// {
// arr[i]= ranShape();
// }
Rectangle rect = new Rectangle(10, 10);
Circle circ = new Circle(6.7);
rightTriangle riTri = new rightTriangle(9, 12.3);
Square sqa = new Square(2);
//random array 20-50
int roll= 0;
int roll2= 0;
int o= 0;
int p= 0;
int rectCount= 1;
int squCount= 1;
int circCount= 1;
int triCount= 1;
roll= (int)(Math.random()*50) + 20;
System.out.println(roll);
Shape[] arr = new Shape[roll];
for (int l= 0; l < roll; l++)
{
roll2= (int)(Math.random()*4) + 1;
o= (int)(Math.random()*100) + 10;
p= (int)(Math.random()*100) + 1;
if (roll2 == 1)
{
arr[l]= new Rectangle(o, p);
// arr[l].getArea();
// arr[l].getPerimeter();
arr[l].toString();
if (l < roll)
{
System.out.println("Rectangle " + rectCount + " stats are: ");
}
rectCount++;
}
if (roll2 == 2)
{
arr[l]= new Square(o);
// arr[l].getArea();
// arr[l].getPerimeter();
arr[l].toString();
if (l < roll)
{
System.out.println("Square " + squCount + " stats are: ");
}
squCount++;
}
if (roll2 == 3)
{
arr[l]= new rightTriangle(o, p);
// arr[l].getArea();
// arr[l].getPerimeter();
arr[l].toString();
if (l < roll)
{
System.out.println("Right triangle " + triCount + " stats are: ");
}
triCount++;
}
if (roll2 == 4)
{
arr[l]= new Circle(p);
arr[l].toString();
// arr[l].getArea();
// arr[l].getPerimeter();
if (l < roll)
{
System.out.println("Circle " + circCount + " stats are: ");
}
circCount++;
}
}
}
Class - 这是我的抽象 class,我还有一个直角三角形、圆形、正方形和矩形 class 扩展形状。
Shape (abstract)
public abstract class Shape
{
public abstract double getArea();
public abstract double getPerimeter();
//NOTE: getClass().getName() will return the class name that the object was instantiated as.
public String toString()
{
return (getClass().getName() + ",\t Area: " + getArea() + ",\t
Perimeter: " + getPerimeter());
}
}
所以我的输出很好 - 除了最后一个元素,例如,我有
[很多形状和area/perimeters]...
...
直角三角形 14 的统计数据是:
class圆的面积为:30790.74959783356
class圆周长为:622.0353454107791
第 18 圈的统计数据是:
这就是它停止的地方。没有错误消息,只是最后一个元素的一部分,没有实际打印周长或面积(使用 getArea/getPerimeter 或 toString 访问)
你必须颠倒顺序
for (int l= 0; l < roll; l++)
{
roll2= (int)(Math.random()*4) + 1;
o= (int)(Math.random()*100) + 10;
p= (int)(Math.random()*100) + 1;
if (roll2 == 1)
{
if (l < roll)
{
arr[l]= new Rectangle(o, p);
System.out.println("Rectangle " + rectCount + " stats are: ");
arr[l].toString();
rectCount++;
}
}
if (roll2 == 2)
{
if (l < roll)
{
arr[l]= new Square(o);
System.out.println("Square " + squCount + " stats are: ");
arr[l].toString();
squCount++;
}
}
if (roll2 == 3)
{
if (l < roll)
{
arr[l]= new rightTriangle(o, p);
System.out.println("Right triangle " + triCount + " stats are: ");
arr[l].toString();
triCount++;
}
}
if (roll2 == 4)
{
if (l < roll)
{
arr[l]= new Circle(p);
System.out.println("Circle " + circCount + " stats are: ");
arr[l].toString();
circCount++;
}
}
}
这是我的driver
public class ShapeDriver
{
public static void main(String[] args)
{
//
// for (int i= 0; i < arr.length;i++)
// {
// arr[i]= ranShape();
// }
Rectangle rect = new Rectangle(10, 10);
Circle circ = new Circle(6.7);
rightTriangle riTri = new rightTriangle(9, 12.3);
Square sqa = new Square(2);
//random array 20-50
int roll= 0;
int roll2= 0;
int o= 0;
int p= 0;
int rectCount= 1;
int squCount= 1;
int circCount= 1;
int triCount= 1;
roll= (int)(Math.random()*50) + 20;
System.out.println(roll);
Shape[] arr = new Shape[roll];
for (int l= 0; l < roll; l++)
{
roll2= (int)(Math.random()*4) + 1;
o= (int)(Math.random()*100) + 10;
p= (int)(Math.random()*100) + 1;
if (roll2 == 1)
{
arr[l]= new Rectangle(o, p);
// arr[l].getArea();
// arr[l].getPerimeter();
arr[l].toString();
if (l < roll)
{
System.out.println("Rectangle " + rectCount + " stats are: ");
}
rectCount++;
}
if (roll2 == 2)
{
arr[l]= new Square(o);
// arr[l].getArea();
// arr[l].getPerimeter();
arr[l].toString();
if (l < roll)
{
System.out.println("Square " + squCount + " stats are: ");
}
squCount++;
}
if (roll2 == 3)
{
arr[l]= new rightTriangle(o, p);
// arr[l].getArea();
// arr[l].getPerimeter();
arr[l].toString();
if (l < roll)
{
System.out.println("Right triangle " + triCount + " stats are: ");
}
triCount++;
}
if (roll2 == 4)
{
arr[l]= new Circle(p);
arr[l].toString();
// arr[l].getArea();
// arr[l].getPerimeter();
if (l < roll)
{
System.out.println("Circle " + circCount + " stats are: ");
}
circCount++;
}
}
}
Class - 这是我的抽象 class,我还有一个直角三角形、圆形、正方形和矩形 class 扩展形状。
Shape (abstract)
public abstract class Shape
{
public abstract double getArea();
public abstract double getPerimeter();
//NOTE: getClass().getName() will return the class name that the object was instantiated as.
public String toString()
{
return (getClass().getName() + ",\t Area: " + getArea() + ",\t
Perimeter: " + getPerimeter());
}
}
所以我的输出很好 - 除了最后一个元素,例如,我有
[很多形状和area/perimeters]...
...
直角三角形 14 的统计数据是:
class圆的面积为:30790.74959783356
class圆周长为:622.0353454107791
第 18 圈的统计数据是:
这就是它停止的地方。没有错误消息,只是最后一个元素的一部分,没有实际打印周长或面积(使用 getArea/getPerimeter 或 toString 访问)
你必须颠倒顺序
for (int l= 0; l < roll; l++)
{
roll2= (int)(Math.random()*4) + 1;
o= (int)(Math.random()*100) + 10;
p= (int)(Math.random()*100) + 1;
if (roll2 == 1)
{
if (l < roll)
{
arr[l]= new Rectangle(o, p);
System.out.println("Rectangle " + rectCount + " stats are: ");
arr[l].toString();
rectCount++;
}
}
if (roll2 == 2)
{
if (l < roll)
{
arr[l]= new Square(o);
System.out.println("Square " + squCount + " stats are: ");
arr[l].toString();
squCount++;
}
}
if (roll2 == 3)
{
if (l < roll)
{
arr[l]= new rightTriangle(o, p);
System.out.println("Right triangle " + triCount + " stats are: ");
arr[l].toString();
triCount++;
}
}
if (roll2 == 4)
{
if (l < roll)
{
arr[l]= new Circle(p);
System.out.println("Circle " + circCount + " stats are: ");
arr[l].toString();
circCount++;
}
}
}