如何在表中找到条件的随机元素匹配?

时间:2018-03-20 20:40:56

标签: java loops conditional-statements

我已经制作了一张带有几何图形和for循环的桌子,用于打印出具有直角的图形名称,但我想打印出一个随机名称,该图形符合条件,如果它和#39;可能创建另一个只包含与条件匹配的数字的表。我试图使用java.util.Random中的一些方法,但我无法找到方法。我会感谢你的帮助:

import java.util.Random;

public class rectangularFigures {
    private String name;
    private boolean rightAngle;

    public String getName() {
        return name;
    }

    public rectangularFigures(String name, boolean rightAngle) {
        this.name = name;
        this.rightAngle = rightAngle;
    }

    public static void main(String[] args) {
        rectangularFigures[] lOFigures = new rectangularFigures[4];

        lOFigures[0] = new rectangularFigures("whell", false);
        lOFigures[1] = new rectangularFigures("square", true);
        lOFigures[2] = new rectangularFigures("rhombus", false);
        lOFigures[3] = new rectangularFigures("rectangle", true);

        for (int i = 0; i < lOFigures.length; i++) {
            {
                if (lOFigures[i].rightAngle) {
                    System.out.println(lOFigures[i].name);
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

最简单的方法是使用java流:

rectangularFigures[] onlyRightAngles = Arrays.stream(lOFigures).filter(x -> x.rightAngle).toArray(rectangularFigures[]::new);
    rectangularFigures randomElement = onlyRightAngles[new Random().nextInt(onlyRightAngles.length)];
    System.out.println(randomElement.name);

但是如果由于某些原因你不能使用流,我建议使用ArrayList和传统的foreach循环:

List<rectangularFigures> onlyRightAngles = new ArrayList<>();
    for (rectangularFigures figure : lOFigures) {
        if (figure.rightAngle) onlyRightAngles.add(figure);
    }
    rectangularFigures randomElement = onlyRightAngles.get(new Random().nextInt(onlyRightAngles.size()));
    System.out.println(randomElement.name);

答案 1 :(得分:0)

这只是一个小例子,但可以改进:

    Random r = new Random();

    for (int i = 0; i < lOFigures.length; i++) {
        {
            int f = r.nextInt(4);
            if (lOFigures[f].rightAngle) {
                System.out.println(lOFigures[f].name);
            }
        }
    }