有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何对数组列表求和<Integer>

我需要帮助对arrayList中的所有整数求和,并在文本视图中查看求和结果,所有八个数字都来自编辑文本这里是从编辑文本中获取整数并在文本视图中查看求和结果的完整代码

 public class MainActivity extends AppCompatActivity {

EditText editText;
Button button;
TextView textView;

int one, two, three, four, five, six, seven, eight;

int Result;
private static final String TAG = MainActivity.class.getSimpleName();


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

    editText = (EditText) findViewById(R.id.editText);
    button = (Button) findViewById(R.id.button);
    textView = (TextView) findViewById(R.id.text);

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {


            String data = editText.getText().toString();

            one = Integer.parseInt(data.charAt(0) + "");
            two = Integer.parseInt(data.charAt(1) + "");
            three = Integer.parseInt(data.charAt(2) + "");
            four = Integer.parseInt(data.charAt(3) + "");
            five = Integer.parseInt(data.charAt(4) + "");
            six = Integer.parseInt(data.charAt(5) + "");
            seven = Integer.parseInt(data.charAt(6) + "");
            eight = Integer.parseInt(data.charAt(7) + "");


            int[] mNumber = {one, two * 2, three, four * 2, five, six * 2, seven, eight * 2};
            for (int n : mNumber) {
                spiltInt(n);
            }
        }

    });
}

public void spiltInt(int x) {
    String number = String.valueOf(x);
    ArrayList<Integer> list = new ArrayList<>();
    for (int i = 0; i < number.length(); i++) {
        int j = Character.digit(number.charAt(i), 10);
        list.add(j);
    }



}

}


共 (3) 个答案

  1. # 1 楼答案

    你能做到的

        //Assumig variables one,two,three,four,five,six are defined above as int
        int[] mNumber = {one, two * 2, three, four * 2, five, six * 2, seven, eight * 2};
            for (int n : mNumber) {
                spiltInt(n);
            }
           showSum(mNumber);
    
    public void spiltInt(int x) {
        String number = String.valueOf(x);
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < number.length(); i++) {
          int j = Character.digit(number.charAt(i), 10);
          list.add(j);
         }
         int result = 0;
         for(Integer i:list){
            result+=i;
         }
    
          textView.setText(result+"");
      }
    
      public static void showSum(int[] array){
       int sum = 0;
       int digitSum = 0;
       for(int i=0;i<array.length;i++){
           sum+=array[i];
    
           String number = String.valueOf(array[i]);
           ArrayList<Integer> list = new ArrayList<>();
          for (int j = 0; j < number.length(); j++) {
             int k = Character.digit(number.charAt(j), 10);
             list.add(k);
          }
          for(Integer digit:list){
            digitSum+=digit;
         }
       }
       //you can set any of these into test view using setText method
       System.out.println(sum+"");
       System.out.println(digitSum+"");
     }
    
  2. # 2 楼答案

    假设要对整数数组中的所有数字求和,这里有一个1-线性:

    int digitSum = IntStream.of(numbers).flatMap(n -> ("" + n).chars()).map(i -> i - '0').sum();
    
  3. # 3 楼答案

    您正在调用spiltInt(),这是一个non static方法,不能从静态上下文引用它

    只需将spiltInt()设为static,并使用 MainActivity在这种情况下

    你的代码变成了

    for (int n : mNumber) {
          MainActivity.spiltInt(n);
    
            }
     textView.setText(result+"");
    

    现在,要打印结果,请将result变量设置为全局变量

    并在spiltInt()代码末尾使用以下代码

    就像

    for(int k : list){
     result = result+k;
    }