java - 在这种情况下使用多个 else if 语句是不好的做法吗?

标签 java android

我正在使用多个 else if 来使程序根据旋转器中当前选择的值执行某些操作,但我忍不住认为有一种更简洁的方法可以做到这一点。有什么建议吗?

    if(spinnerinput.equals(spinnerinput2)) {
        output.setText(input.getText());
    }

    else if(spinnerinput.equals("Base 2") && spinnerinput2.equals("Base 10")) {
        String regex = "[0-1]+";

        if (input.getText().toString().matches(regex)) {
            output.setText(binaryToDecimal(input.getText().toString()));
        } else {
            Context context = getApplicationContext();
            CharSequence text = "Invalid characters for a binary number!";
            int duration = Toast.LENGTH_SHORT;

            Toast toast = Toast.makeText(context, text, duration);
            toast.show();
        }
    }

    else if(spinnerinput.equals("Base 10") && spinnerinput2.equals("Base 2")) {
        String regex = "[0-9]+";

        if(input.getText().toString().matches(regex)) {
            output.setText(decimalToBinary(input.getText().toString()));
        } else {
            Context context = getApplicationContext();
            CharSequence text = "Invalid characters for a decimal number!";
            int duration = Toast.LENGTH_SHORT;

            Toast toast = Toast.makeText(context, text, duration);
            toast.show();
        }
    }

最佳答案

您的 if-else 问题不大,但您可以将代码重构到最少。您的底部两个条件 block 仅在 CharSequence 文本中有所不同。为什么不将其转换为方法并再次使用相同的代码?

private void yourCurrentMethod() {

    if(spinnerinput.equals(spinnerinput2)) {
        output.setText(input.getText());
    }

    else if(spinnerinput.equals("Base 2") && spinnerinput2.equals("Base 10")) {
        String regex = "[0-1]+";
        boolean isBinary = true;
        doSomething(isBinary, "Invalid characters for a binary number!");
    }

    else if(spinnerinput.equals("Base 10") && spinnerinput2.equals("Base 2")) {
        String regex = "[0-9]+";
        boolean isBinary = false;
        doSomething(isBinary, "Invalid characters for a decimal number!");
    }
}

private void doSomething(boolean isBinary, CharSequence text){
    if(input.getText().toString().matches(regex)) {
        if(isBinary){
            output.setText(binaryToDecimal(input.getText().toString()));
        } else {
            output.setText(decimalToBinary(input.getText().toString()));
        } 
    } else {
        Context context = getApplicationContext();
        int duration = Toast.LENGTH_SHORT;

        Toast toast = Toast.makeText(context, text, duration);
        toast.show();
    }
}

关于java - 在这种情况下使用多个 else if 语句是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41090084/

相关文章:

android - 在传统的 android ViewPager 中滚动 LazyRow 的问题

android - 如何在 ImageView 上显示随机图像

java - 调配 AutoScaling 策略失败 : EMR instance group doesn't exist

java - 空指针异常错误

java - 在 java shebang 脚本中加载库

java - 程序在 eclipse 中与库一起工作,但在提取到 jar 时不工作

java - logback 日志记录的时间戳错误

android - 如何修复 : HAXM silent installation only support mac OS X from 10. 8 到 10.10

带有游标的Android列表设计问题

android - PC配置下载编译android AOSP源码