70888


**やりたいこと**  
引数 20092812345 → 2001441678522 としたい。

[code]

    20092812345 * { 1, 3, 7, 9, 7, 3, 1, 3, 9, 7, 1 } = 2(2*1) , 0(0*3), 0(0*7), 81(9*9), 14(2*7), 24(8*3), 1(1*1),
    6(2*3), 27(3*9), 28(4*7),5(5*1) 
    
[/code]

↓

[code]

    2 + 0 + 0 + 81 + 14 + 24 + 1 + 6 + 27 + 28 +5 = 188
    
[/code]

188 → 百の位は無視する。  
十の位はマイナス１０する。  
一の位はマイナス１０する。

[code]

    class nouNum {
        public  String Num01(String in){
            char[] out = in.toCharArray();
            int[] mul = { 1, 3, 7, 9, 7, 3, 1, 3, 9, 7, 1 };
            int n = Math.min(out.length, 11);
            for (int i = 0; i < n; i++)
                out[i] = (char)((out[i] - '0') * mul[i] % 10 + '0');
            return new String(out);
        }
    }
    
    package test;
    
    public class test01 {
        public static void main(String[] args) {
            nouNum test01 = new nouNum();
            System.out.println(test01.Num01("20092812345"));
        }
    }
    
[/code]

[code]

    import java.util.stream.IntStream;
    import static java.util.stream.Collectors.joining;
    
    public class test01 {
      public static void main(String[] args) {
        System.out.println(Num01("20092812345"));
      }
    
      static String Num01(String in){
        int[] out = in.chars().map(c -> c-'0').toArray();
        int[] mul = { 1, 3, 7, 9, 7, 3, 1, 3, 9, 7, 1 };
        int n = Math.min(out.length, mul.length);
        int r, sum = 0;
        for (int i = 0; i < n; i++) {
          sum += (r = out[i] * mul[i]);
          out[i] = r % 10;
        }
    
        return IntStream.of(out)
          .mapToObj(Integer::toString).collect(joining(""))
          + (110 - sum % 100);
      }
    }
    
[/code]


CC BY-SA 4.0
2020-10-02T16:45:39.320
70887
2020-10-04T06:24:46.437
2020-10-04T06:24:46.437
32986
32774
question
java
合計値を求めたい


何のためのコードなのかが不明なので、少なくとも

> やりたいこと  
>  引数 20092812345 → 2001441678522 としたい。  
>  :
>
> 188 →  
>  百の位は無視する。十の位はマイナス１０する。一の位はマイナス１０する。

の場合には想定通りに動作する Java コードの一例です。

[code]

    import java.util.stream.IntStream;
    import static java.util.stream.Collectors.joining;
    
    public class test01 {
      public static void main(String[] args) {
        System.out.println(Num01("20092812345", "13797313971"));
      }
    
      static String Num01(String in, String ml){
        int[] out = in.chars().map(c -> c-'0').toArray();
        int[] mul = ml.chars().map(c -> c-'0').toArray();
        int n = Math.min(out.length, mul.length);
        int r, sum = 0;
        for (int i = 0; i < n; i++) {
          sum += (r = out[i] * mul[i]);
          out[i] = r % 10;
        }
    
        return IntStream.of(out)
          .mapToObj(Integer::toString).collect(joining(""))
          + (110 - sum % 100);
      }
    }
    
    // =>
    2001441678522
    
[/code]


CC BY-SA 4.0
2020-10-03T00:55:49.037
70888
2020-10-03T00:55:49.037
70887
answer