2017-10-12 63 views
1

我写了一个程序,计算用户输入的4个输入值的总和。Android如何为计算总和的程序设置最大结果限制?

我想限制结果最大值为6(任何结果> 6返回值为“6”)。

例如,如果4个数字的总和是10,则它会自动被改变为6

Java代码是:

EditText editText3; 
EditText editText4; 
EditText editText6; 
EditText editText8; 
TextView textViewResult; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.calculator); 

    editText3 = (EditText) findViewById(R.id.editText3); 
    editText4 = (EditText) findViewById(R.id.editText4); 
    editText6 = (EditText) findViewById(R.id.editText6); 
    editText8 = (EditText) findViewById(R.id.editText8); 
    textViewResult = (TextView) findViewById(R.id.textViewResult); 

    editText3.addTextChangedListener(new TextWatcher() { 

     public void beforeTextChanged(CharSequence s, int start, int count, 
             int after) { 
      // TODO Auto-generated method stub 
     } 

     public void onTextChanged(CharSequence s, int start, int before, 
            int count) { 
      textViewResult.setText(addNumbers()); 
     } 

     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub 
     } 
    }); 

    editText4.addTextChangedListener(new TextWatcher() { 

     public void beforeTextChanged(CharSequence s, int start, int count, 
             int after) { 
      // TODO Auto-generated method stub 

     } 

     public void onTextChanged(CharSequence s, int start, int before, 
            int count) { 
      textViewResult.setText(addNumbers()); 

     } 

     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub 

     } 
    }); 

    editText6.addTextChangedListener(new TextWatcher() { 

     public void beforeTextChanged(CharSequence s, int start, int count, 
             int after) { 
      // TODO Auto-generated method stub 

     } 

     public void onTextChanged(CharSequence s, int start, int before, 
            int count) { 
      textViewResult.setText(addNumbers()); 

     } 

     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub 

     } 
    }); 

    editText8.addTextChangedListener(new TextWatcher() { 

     public void beforeTextChanged(CharSequence s, int start, int count, 
             int after) { 
      // TODO Auto-generated method stub 

     } 

     public void onTextChanged(CharSequence s, int start, int before, 
            int count) { 
      textViewResult.setText(addNumbers()); 

     } 

     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub 

     } 
    }); 
} 

private String addNumbers() { 
    int number1; 
    int number2; 
    int number3; 
    int number4; 
    if(editText3.getText().toString() != "" && editText3.getText().length() > 0) { 
     number1 = Integer.parseInt(editText3.getText().toString()); 
    } else { 
     number1 = 0; 
    } 
    if(editText4.getText().toString() != "" && editText4.getText().length() > 0) { 
     number2 = Integer.parseInt(editText4.getText().toString()); 
    } else { 
     number2 = 0; 
    } 
    if(editText6.getText().toString() != "" && editText6.getText().length() > 0) { 
     number3 = Integer.parseInt(editText6.getText().toString()); 
    } else { 
     number3 = 0; 
    } 
    if(editText8.getText().toString() != "" && editText8.getText().length() > 0) { 
     number4 = Integer.parseInt(editText8.getText().toString()); 
    } else { 
     number4 = 0; 
    } 

    return Integer.toString((number1*2) + (number2*4) + (number3*2) + (number4*2)); 

} 
} 
+1

这不是[mcve](https://stackoverflow.com/help/mcve)。你的问题只是关于整数的总和。这与Android无关。 –

+0

您可以执行类似if(sum)> = 6将值6分配给结果字段 – Lokesh

+0

两个建议: 1:使用TextWatcher()的单个实例并将其传递给每个addTextChangeListener()调用。 2:使用函数来处理从EditText对象获取数字的逻辑。例如。 'int getNumberForInput(EditText input)' – calebbrown

回答

1

变化: “return Integer.toString((number1*2) + (number2*4) + (number3*2) + (number4*2));” 这样:

int sum = (number1*2) + (number2*4) + (number3*2) + (number4*2); 
if(sum>6) sum = 6; 
return sum+""; 
+0

谢谢,效果很好! –