如果数字满足两个以上条件,如何返回两种类型?
到目前为止,我得到的输出是: 输入三个整数:8 8 8 <8,8,8>是等腰三角形
private Types getTypes ()
{
int a = getA();
int b = getB();
int c = getC();
if ((a+b) > c || (a+c) > b || (b+c) > a )
{
if (a==b || a==c || b==c)
{
return Types.Isosceles;
}
if (a == b && b == c && c==a)
{
return Types.Equilateral;
}
else
{
return Types.Scalene;
}
}
else
return Types.NoShape;
}
理想的输出为 输入三个整数:8 8 8 <8,8,8>是等边三角形 <8、8、8>是等腰三角形 <8,8,8>是一个三角形
答案 0 :(得分:3)
您可以返回Set<Types>
,因为一个集合可以容纳多个项目。在方法开始时,创建一个集合以添加所有类型。然后,您可以在其余方法中添加它。
private Set<Types> getTypes() {
Set<Types> set = EnumSet.noneOf(Types.class);
int a = getA();
int b = getB();
int c = getC();
if ((a+b) > c || (a+c) > b || (b+c) > a) {
if (a==b || a==c || b==c) {
set.add(Types.Isosceles);
}
if (a == b && b == c && c==a) {
set.add(Types.Equilateral);
} else {
set.add(Types.Scalene);
}
}
if (set.isEmpty()) {
set.add(Types.NoShape);
}
return set;
}
答案 1 :(得分:0)
在Java中无法返回两个单独的变量。
解决此问题的最简单方法是声明一个Array并返回需要在Array中返回的两个变量。例如。
Types[] ret = new Types[2];
ret[0] = Types.equilateral;
ret[1] = Types.isosceles;
return ret;
这将返回数组中等边和等腰的两个值。对于Types数组,这应该是正确的语法。
答案 2 :(得分:0)
您也可以使用StringBuilder由您选择的分隔符分隔存储结果,然后拆分得到的线,让你多个结果。
private static String getTypes ()
{
int a = getA();
int b = getB();
int c = getC();
Types [] answer = new Types[4];
StringBuilder sb = new StringBuilder("");
if ((a+b) > c || (a+c) > b || (b+c) > a )
{
if ((a==b || a==c || b==c))
{
sb.append(Types.Isosceles)
sb.append(DELIMITER); // DELIMITER is a character of you choice...
}
if (a == b && b == c && c==a)
{
sb.append(Types.Equilateral);
sb.append(DELIMITER);
} else {
sb.append(Types.Scalene);
sb.append(DELIMITER);
}
}
else{
sb.append(Types.NoShape);
sb.append(DELIMITER);
}
return sb.toString();
}
答案 3 :(得分:0)
代替某种类型的集合的另一种可能性是,您可以制作一个简单的对象,例如
class ShapeInfo {
private final boolean isosceles;
private final boolean equilateral;
private final boolean scalene;
public ShapeInfo(int a, int b, int c) {
if (a + b > c || a + c > b || b + c > a) {
equilateral = a == b && a == c && b == c;
isosceles = a == b || a == c || b == c;
scalene = !equilateral && !isosceles;
} else {
equilateral = false;
isosceles = false;
scalene = false;
}
}
@Override
public String toString(){
// TODO your print method here using the private instance variables
}
// add getters if you need them
}
通过这种方式,构造函数可以处理对象的属性,并且代码易于移植(此处包含自身)。
ShapeInfo shapeInfo = new ShapeInfo(8, 8, 8);
System.out.println(shapeInfo);