我怎样才能改进这个超级易用的基本新手代码?

时间:2017-11-08 07:20:18

标签: java

虽然这个程序有效,但我不确定这是将用户选择与三个值x,y,z进行比较的最佳方法。还有什么可能呢?

  if (userchoice == 1) {

        double x = p1.getStorageSize();
        double y = p2.getStorageSize();
        double z = p3.getStorageSize();

        System.out.println("How much memory do you need?");
        double memoryByUser = input.nextDouble();

        if (memoryByUser > x) {
            ArrayList numbers = new ArrayList <>();
            numbers.add(p1.getModel());
            if (memoryByUser > y) {
                numbers.add(p2.getModel());
            } else {
                print = numbers;
            }
            if (memoryByUser > z) {
                numbers.add(p3.getModel());
                print = numbers;
            } else {
                print = numbers;

            }

        }

    }
    return String.valueOf(print);
  }
}

1 个答案:

答案 0 :(得分:0)

将变量与三个值进行比较可以通过不同方式完成。知道对三个值的关系做出任何假设是否安全(例如x> = y&gt; = z)将是有趣的。只有当变量的值大于x时,您的代码才会将变量与y和z进行比较;否则不会触及y和z。

除了考虑三个值的逻辑之外,您还可以稍微整理一下代码。这是一个精简版本,可以避免不必要的声明和变量赋值。

if (userchoice == 1) {
    ArrayList numbers = new ArrayList<>();
    System.out.println("How much memory do you need?");
    double memoryByUser = input.nextDouble();

    if (memoryByUser > p1.getStorageSize()) {
        numbers.add(p1.getModel());
        if (memoryByUser > p2.getStorageSize()) {
            numbers.add(p2.getModel());
        }
        if (memoryByUser > p3.getStorageSize()) {
            numbers.add(p3.getModel());
        }
    }
}    
return String.valueOf(numbers);