java 如何增加整数数组值?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/32597043/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-02 20:27:52  来源:igfitidea点击:

How to increment integer Array values?

javaarrays

提问by Deep

I am designing a problem in which I have to use an int array to add or subtract values. For example instead of changing 100 to 101 by adding 1, I want to do the same thing using the int array. It work like this:

我正在设计一个问题,我必须使用 int 数组来添加或减去值。例如,我不想通过加 1 将 100 更改为 101,而是想使用 int 数组做同样的事情。它是这样工作的:

int[] val = new int[3];

val[0] = 1;
val[1] = 0;
val[2] = 0;

val[2] += 1;

so, If I have to get a value of 101, I will add 1 to val[2].

所以,如果我必须得到 101 的值,我会将 1 添加到 val[2]。

The only problem I have is finding a way to make int array work like how adding and subtracting from an ordinary integer data set works.

我唯一的问题是找到一种方法来使 int 数组工作,就像从普通整数数据集中添加和减去的工作方式一样。

Is this possible using a for loop or a while loop? Any help will be appreciated!

这是否可以使用 for 循环或 while 循环?任何帮助将不胜感激!

回答by Bohemian

Here's your homework:

这是你的作业:

public static int[] increment(int[] val) {
    for (int i = val.length - 1; i >= 0; i--) {
        if (++val[i] < 10)
            return val;
        val[i] = 0;
    }
    val = new int[val.length + 1];
    val[0] = 1;
    return val;
}

Make sure you understand how and why it works before submitting it as your own work.

在将其作为自己的作品提交之前,请确保您了解它的工作原理和原因。

回答by jp-jee

Quick & dirty:

快速和肮脏:

static void increment(int[] array){
    int i = array.length-1;
    do{
        array[i]=(array[i]+1)%10;
    }while(array[i--]==0 && i>=0);
}

Note the overflow when incementing e.g. {9, 9}. Result is {0, 0} here.

请注意,例如 {9, 9} 时的溢出。结果是 {0, 0} 在这里。

回答by kartikag01

Solution of this problem is designed by using String
You can refer to this method which will return sum of 2 nos having input in String format.

这个问题的解决方案是通过使用设计的String
你可以参考这个方法,它会以String格式返回输入的2个nos的总和。

Input String should contain only digits.

输入字符串应仅包含数字。

class Demo {
public static String add(String a1, String b1) {
    int[] a = String_to_int_Array(a1);
    int[] b = String_to_int_Array(b1);
    int l = a.length - 1;
    int m = b.length - 1;
    int sum = 0;
    int carry = 0;
    int rem = 0;
    String temp = "";
    if (a.length > b.length) {
        while (m >= 0) {
            sum = a[l] + b[m] + carry;
            carry = sum / 10;
            rem = sum % 10;
            temp = rem + temp;
            m--;
            l--;
        }
        while (l >= 0) {
            sum = a[l] + carry;
            carry = sum / 10;
            rem = sum % 10;
            temp = rem + temp;
            l--;
        }
        if (carry > 0) {
            temp = carry + temp;
        }
    } else {
        while (l >= 0) {
            sum = a[l] + b[m] + carry;
            carry = sum / 10;
            rem = sum % 10;
            temp = rem + temp;
            m--;
            l--;
        }
        while (m >= 0) {
            sum = b[m] + carry;
            carry = sum / 10;
            rem = sum % 10;
            temp = rem + temp;
            m--;
        }
        if (carry > 0) {
            temp = carry + temp;
        }
    }
    return temp;

}

public static int[] String_to_int_Array(String s) {
    int arr[] = new int[s.length()], i;
    for (i = 0; i < s.length(); i++)
    arr[i] = Character.digit(s.charAt(i), 10);
    return arr;
}

public static void main(String a[]) {
    System.out.println(add("222", "111"));
}
}

回答by Mihir Lakhia

enter image description here

在此处输入图片说明

public static void increment() {    
    int[] acc = {9,9,9,9};
    String s="";
    for (int i = 0; i < acc.length; i++)
        s += (acc[i] + "");
    int i = Integer.parseInt(s);
    i++;
    System.out.println("\n"+i);
    String temp = Integer.toString(i);
    int[] newGuess = new int[temp.length()];
    for (i = 0; i < temp.length(); i++)
    {
        newGuess[i] = temp.charAt(i) - '0';
    }

    printNumbers(newGuess);
}

public static void printNumbers(int[] input) {      
    for (int i = 0; i < input.length; i++) {
        System.out.print(input[i] + ", ");
    }
    System.out.println("\n");
}