如何在EditText中添加所有单个整数?

时间:2019-06-20 21:48:53

标签: java android xml

我具有以下布局,当我按下绿色按钮并将其显示在底部的TextView上时,我需要添加在EditText中输入的所有一位整数。我有点迷上了这个。抱歉,如果以前已经回答过,但我在这里找不到答案。

例如,在EditText中输入1234,结果为10。

my layout

我不知道使用数组或类似的方法是否有帮助。我记得以前做过这种运动,但我找不到。也许这是一个数组,我在另一个For内部分配了一个For。

public class AddingNumbers extends AppCompatActivity {
Button calculate;
TextView result;
EditText numbers;
int array[];

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_addingnumbers;

    calculate=(Button)findViewById(R.id.btn_calculate);
    result=(TextView)findViewById(R.id.txt_result);
    numbers=(EditText)findViewById(R.id.txt_numbers);

    calculate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });
}
}

2 个答案:

答案 0 :(得分:0)

您可以进行与此类似的操作(只是一个想法)

calculate.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String value = numbers.getText().toString();
        char[] chars = value.toCharArray();
        int total = 0;
        for (int i = 0; i < chars.length; i++) {
            int parsedInt = Character.getNumericValue(chars[i]);
            if (parsedInt >= 0) {
                total += parsedInt;
            }
        }
        if (total > 0) {
            result.setText(Integer.toString(total));
        } else {
            result.setText("");
        }
    }
});

答案 1 :(得分:0)

您可以使用IntStream过滤并将单个字符转换为整数,首先过滤字符在'0'和'9'之间,然后减去字符'0'进行转换。然后,您可以使用sum()上的IntStream函数对数字求和。

  String input = "There are 3 un1que numbers 1n 4 places here";
  int sum = input.chars()
      .filter(c -> c >= '0' && c <= '9') // remove non-digit characters
      .map(c -> c - '0')                 // convert character to integer
      .sum();                            // sum the individual digits

放在一起,我们得到:

   calculate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           int sum = numbers.getText().chars()
               .filter(c -> c >= '0' && c <= '9')
               .map(c -> c - '0')
               .sum();
           result.setText(String.valueOf(sum)));
        }
   });