2013-09-20 3 views
2
public class Swap_Numbers { 

     public static void main(String[] args) { 


       int numTens[] = {1, 2, 3, 4, 5}; // First array of numbers 
       int numHundred[] = {100, 200, 300, 400, 500}; //Second Array of Numbers 


     System.out.println (numTens[3]); // I want my numTens displays numHundred 
     System.out.println (numHundred[4]); // I want my numHundred displays numTens 
    } 
} 

Я просто не знаю, какие коды следует использовать для обмена данными numTens и numHundred без использования дополнительных переменных .. надеюсь, что некоторые могут объяснить мне, как спасибо!Как поменять данные массивов?

+0

Приведенный выше код не работает! – codeMan

+0

Basic .... 'temp = b; b = a; a = temp; ' –

ответ

3

Я просто не знаю, какие коды я должен использовать, чтобы поменять местами данные numTens и numHundred без использования дополнительных переменных

Вы не должны, в принципе. Просто возьмите простой маршрут временной переменной:

int[] tmp = numTens; 
numTens = numHundred; 
numHundred = tmp; 

Для Интс вы можете фактически поменять значения в массивах с использованием арифметики без временных переменных (что не такой же, как свопинга, которые Массивы переменные ссылаются), но было бы очень странно реально оказаться в ситуации, когда вы хотите это сделать. Пример кода:

import java.util.Arrays; 

public class Test { 

    public static void main(String[] args) { 
     int[] x = { 1, 2, 3, 4, 5 }; 
     int[] y = { 15, 60, 23, 10, 100 }; 

     swapValues(x, y); 
     System.out.println("x: " + Arrays.toString(x)); 
     System.out.println("y: " + Arrays.toString(y)); 
    } 

    static void swapValues(int[] a, int[] b) { 
     // TODO: Validation 
     for (int i = 0; i < a.length; i++) { 
      a[i] += b[i]; 
      b[i] = a[i] - b[i]; 
      a[i] -= b[i]; 
     } 
    } 
} 

Даже там, я бы на самом деле записи swapValues используя временную переменную вместо этого, но приведенный выше код, чтобы доказать точку ...

+0

Что делает java.util.Arrays: does? и какова функция Arrays.toString? – Joey

+0

@Joey: Вы прочитали документацию? Какой из них это было непонятно? –

+0

какая документация сэр? – Joey

0
int numTens[] = {1, 2, 3, 4, 5}; // First array of numbers 
int numHundred[] = {100, 200, 300, 400, 500}; //Second Array of Numbers 

for (int i = 0; i < numTens.length; i++) { 
     numHundred[i] = numTens[i]; 
     numTens[i] = numTens[i]*100; 
} 

System.out.println (numTens[3]); 
System.out.println (numHundred[4]); 
2

Для этого я» m, предполагая, что оба массива имеют одинаковый размер. Тогда вы можете сделать:

for (int i = 0; i < numTens.length; i++) 
{ 
    numTens[i] = numTens[i] + numHundred[i];  // statement 1 
    numHundred[i] = numTens[i] - numHundred[i]; // statement 2 
    numTens[i] = numTens[i] - numHundred[i];  // statement 3 
} 

Позволяет взять 2 элементы как массив

Ten[2] = 3; 
Hundred[2] = 300; 
------------------------------------- 
Ten[2] = 303 // after statement 1 
Hundred[2] = 3 // after statement 2 
Ten[2] = 300 // after statement 3 
------------------------------------- 
Ten[2] = 300; 
Hundred[2] = 3; 

Значения меняются местами без использования временной переменной.

1

Если вы хотите поменять местами числа в массиве вы можете сделать что-то вроде этого:

void swap(int[] arr1, int[] arr2) 
{ 
     //if parameters are as bellow 
     //arr1 = {1, 2, 3, 4, 5}; 
     //arr2 = {10, 20, 30, 40, 50}; 


     if(arr1.length == arr2.length) 
     { 
      for(int i =0; i < arr1.length ; i++) 
      { 
       arr1[i] = arr1[i] + arr2[i]; 
       arr2[i] = arr1[i] - arr2[i]; 
       arr1[i] = arr1[i] - arr2[i]; 
      } 
     } 
     else 
     { 
      throw new IllegalArgumentException; 
     } 
} 
Смежные вопросы