2015-09-15 3 views
1

Я разрабатываю проблему, в которой я должен использовать массив int для добавления или вычитания значений. Например, вместо того, чтобы сменить 100 на 101 путем добавления 1, я хочу сделать то же самое, используя массив int. Это работает так:Как увеличить значения массива?

int[] val = new int[3]; 

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

val[2] += 1; 

так, если я должен получить значение 101, я добавлю 1 к валу [2].

Единственная проблема, с которой я столкнулся, - найти способ заставить int-массив работать так, как работает добавление и вычитание из обычного целочисленного набора данных.

Возможно ли это использовать цикл for или цикл while? Любая помощь будет оценена!

+0

Не могли бы вы добавить более полный пример для прояснения проблемы? – lametaweb

+0

Немного сложно объяснить, что я хочу. То, что я пытаюсь достичь, состоит в том, что массив целых чисел хранит каждую цифру из целого числа. Например: 100 будет храниться в массиве, называемом val like: val [0] = 1, val [1] = 0 и val [2] = 0. Затем, когда я добавляю что-то в сотню, я хочу сделать это, используя массив, представляющий целое число. Надеюсь, он это объяснит! – Deep

ответ

1

Вот ваша домашняя:

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; 
} 

Убедитесь, что вы понимаете, как и почему это работает, прежде чем представить его в своей работе.

+0

Не могли бы вы объяснить мне цель трех строк кода в конце цикла for? Это даже не выполняется. – Deep

+0

На самом деле неважно. Я понял. Таким образом, вам не нужно объяснять цель строк кода. – Deep

+1

В любом случае, поскольку возник вопрос: последние 3 строки обрабатывают переполнение. При увеличении массива с длиной 'n', заполненной всеми' 9 's, для соответствия результату создается новый массив с длиной n + 1. Приращение {9, 9} приводит к {1, 0, 0}. –

1

Решение этой проблемы выполнено с использованием String
Вы можете обратиться к этому методу, который вернет сумму в 2 нс, имеющую входной сигнал в формате String.

Строка ввода должна содержать только цифры.

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")); 
} 
} 
1

Быстрый & загрязнен:

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

Примечание переполнение, когда, например, incementing {9, 9}. Результат здесь {0, 0}.

0

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"); 
} 
Смежные вопросы