Java 我如何改进这个超级简单的新手代码?

Java 我如何改进这个超级简单的新手代码?,java,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 nee

虽然这个程序有效,但我不确定它是否是将用户选择与三个值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);
  }
}
if(userchoice==1){
double x=p1.getStorageSize();
双y=p2.getStorageSize();
double z=p3.getStorageSize();
System.out.println(“您需要多少内存?”);
double memoryByUser=input.nextDouble();
如果(memoryByUser>x){
ArrayList编号=新的ArrayList();
add(p1.getModel());
如果(memoryByUser>y){
add(p2.getModel());
}否则{
打印=数字;
}
if(memoryByUser>z){
add(p3.getModel());
打印=数字;
}否则{
打印=数字;
}
}
}
返回字符串.valueOf(打印);
}
}

可以用不同的方法将一个变量与三个值进行比较。了解对三个值之间的关系(例如x>=y>=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);
if(userchoice==1){
ArrayList编号=新的ArrayList();
System.out.println(“您需要多少内存?”);
double memoryByUser=input.nextDouble();
如果(memoryByUser>p1.getStorageSize()){
add(p1.getModel());
如果(memoryByUser>p2.getStorageSize()){
add(p2.getModel());
}
如果(memoryByUser>p3.getStorageSize()){
add(p3.getModel());
}
}
}    
返回字符串.valueOf(数字);

您能详细说明您的问题吗?是的,看起来很奇怪,但您可以明确地将代码print=number移出if-else块,并且只使用一次。事实上,将数字声明移出if块,直接使用String.valueOf(numbers)我投票将这个问题作为离题题题结束,因为它更适合@OlegEstekhin,而不是它的当前形式。这对于代码审查来说太小了。如果提供更多的上下文,并显示更多的代码,它就会工作。