这是我的代码,为什么会出现错误:package com.first; import java.util.; public class experiment { public static void main(String[] args) { Scanner input = new Scanner ( System . in ) ; System . out. println ("输入三角形的三条边、颜色以及一个Boolean值表明该三角形是否填充") ; double side1 = input.nextDouble ( ) ; double side2 = input.nextDouble ( ) ; double side3 = input.nextDouble ( ) ; boolean filled = input.nextBoolean(); String color = input.nextLine ( ) ; Triangle triangle = new Triangle(side1,side2,side3,color,filled); System . out . println ("面积为" + triangle.getArea()) ; System . out . println ("周长为"+ triangle.getPerimeter()) ; System . out . println ("颜色为"+ triangle.getColor()) ; System . out . println ("是否被填充"+ triangle.isFilled()) ; } }package com.first; import java.util.; public class GeometricObject { private String color ; private boolean filled ; GeometricObject (){ }; GeometricObject (String color,boolean filled){ this.color=color; this.filled=filled; }; public String getColor() { return color; } public void setColor(String color) { this.color=color; } public boolean isFilled() { return filled; } public void setFilled(boolean filled) { this.filled=filled; }; public String toString() { return "the color is "+color+"and filled is"+filled; }; };package com.first; import java.util.; public class Triangle extends GeometricObject{ double side1 = 1.0; double side2 = 1.0; double side3 = 1.0; public Triangle() { } public Triangle(double side1, double side2, double side3,String color,boolean filled) { this.side1 = side1; this.side2 = side2; this.side3 = side3; setColor(color); setFilled(filled); } public double getSide1() { return side1; } public double getSide2() { return side2; } public double getSide3() { return side3; } double getArea(){ double s=(side1+side2+side3)/2; return Math.sqrt(s(s-side1)(s-side2)(s-side3)); } double getPerimeter(){ return side1+side2+side3; } public String toString() { return "Triangle: side1=" + side1 + " side2=" + side2 +" side3=" + side3; } }
时间: 2024-01-17 12:03:00 浏览: 26
你的代码中出现错误的原因是用户输入颜色时,输入的字符串中可能包含了空格或者其他非法字符,导致程序无法正确读取颜色。解决方法是在输入颜色之前使用 input.next() 方法清空输入缓冲区。修改后的代码如下:
```
import java.util.*;
public class experiment {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("输入三角形的三条边、颜色以及一个Boolean值表明该三角形是否填充");
double side1 = input.nextDouble();
double side2 = input.nextDouble();
double side3 = input.nextDouble();
boolean filled = input.nextBoolean();
input.nextLine(); // 清空输入缓冲区
String color = input.nextLine();
Triangle triangle = new Triangle(side1, side2, side3, color, filled);
System.out.println("面积为" + triangle.getArea());
System.out.println("周长为" + triangle.getPerimeter());
System.out.println("颜色为" + triangle.getColor());
System.out.println("是否被填充" + triangle.isFilled());
}
}
class GeometricObject {
private String color;
private boolean filled;
GeometricObject() {
}
GeometricObject(String color, boolean filled) {
this.color = color;
this.filled = filled;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public boolean isFilled() {
return filled;
}
public void setFilled(boolean filled) {
this.filled = filled;
}
public String toString() {
return "the color is " + color + "and filled is" + filled;
}
}
class Triangle extends GeometricObject {
double side1 = 1.0;
double side2 = 1.0;
double side3 = 1.0;
public Triangle() {
}
public Triangle(double side1, double side2, double side3, String color, boolean filled) {
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
setColor(color);
setFilled(filled);
}
public double getSide1() {
return side1;
}
public double getSide2() {
return side2;
}
public double getSide3() {
return side3;
}
double getArea() {
double s = (side1 + side2 + side3) / 2;
return Math.sqrt(s * (s - side1) * (s - side2) * (s - side3));
}
double getPerimeter() {
return side1 + side2 + side3;
}
public String toString() {
return "Triangle: side1=" + side1 + " side2=" + side2 + " side3=" + side3;
}
}
```