2016-08-29 2 views
0

Я работаю над этим заданием в течение некоторого времени, и я застрял. Цель состоит в том, чтобы сделать массив int с числами 1-5, а затем создать массив строк с 6-10, затем поместить 6-10 в массив int и 1-5 в массив строк, а затем сделать некоторые вещи к нему. Я сделал большую часть «материала» для него (умножить, добавить и т. Д.), Но я не могу понять, как переключать два массива друг с другом. Я пробовал несколько методов, которые я нашел в stackoverflow, но я не мог их реализовать. В настоящее время методы я пытался закомментированоПереключение массивов int и string в Java

Вот код:

import java.util.*; 
import java.io.*; 

public class Rebel 
{ 
    public static void main (String[] args) 
    { 
     int[] numbers = {1,2,3,4,5}; 
     String[] words = {"6", "7", "8", "9", "10"}; 

     System.out.println(numbers.getClass().getName()); // test data type before converting 
     System.out.println(words.getClass().getName()); // test data type before converting 

     for(int i = 0; i < numbers.length; i++) // prints out int array 
     { 
     System.out.println(numbers[i]); 
     } 

     for(int j = 0; j < words.length; j++) // prints out string array 
     { 
     System.out.println(words[j]); 
     } 
     /* Switching the arrays 


     //java.util.Arrays.toString(numbers[]); // converts int to string 
     // numbers = Arrays.asList(words).stream().mapToInt(Integer::parseInt).toArray(); // convert string to int 

    // int [] tempNum = Arrays.asList(words.split(",")).stream().map(String::trim).mapToInt(Integer::parseInt).toArray(); 

    //int [] tempNum = Arrays.asList(words.split(",")).stream().mapToInt(Integer::parseInt).toArray(); 
    */ 

     System.out.println("There are " + numbers.length + " elements in numbers array"); 
     System.out.println("There are " + words.length + " elements in words array"); 
     System.out.println(java.util.Arrays.toString(numbers)); 
     System.out.println(java.util.Arrays.toString(words)); 

     for(int num: numbers) 
     { 
     num = num*4; 
     System.out.println(num); 
     } 
     for (String word: words) 
     { 
     System.out.println(stringMultiply(word, 3)); // s = word, and n = 3; 
     } 
     System.out.println(numbers.getClass().getName()); // test data type after converting 
     System.out.println(words.getClass().getName()); // test data type after converting 


    } 


    public static String stringMultiply(String s, int n) /// "multiply" string 
    { 
    StringBuilder sb = new StringBuilder(); 
    for(int i = 0; i < n; i++) 
    { 
     sb.append(s); 
    } 
    return sb.toString(); 
    } 
} 
+0

Перед попробовать 'streams' и «mappers» лучше попробовать базовые Java-материалы для реализации требуемой функциональности. Перестановка двух переменных станет хорошей отправной точкой для чтения и завершения задания. Удачи –

ответ

0

Вы были почти там с:

numbers = Arrays.asList(words).stream().mapToInt(Integer::parseInt).toArray(); 

Но вы должны сохранить numbers массив первого, так что вы можете использовать позже создать массив words.

int[] temp = numbers; 
numbers = Stream.of(words).mapToInt(Integer::parseInt).toArray(); 
words = IntStream.of(temp).boxed().map(Object::toString).toArray(String[]::new); 
0

Это может быть сделано следующим образом:

public static void main(String[] args) 
     { 
//  The data 
     int[] numbers = {1, 2, 3, 4, 5}; 
     String[] words = {"6", "7", "8", "9", "10"}; 

    //  Create a new tempNumber array with word length 
      int[] tempNumber = new int[words.length]; 

    //  Set i=0 just for a shorter for loop 
      int i = 0; 
    //  Enter each string to the tempNumber array. 
      for(String s : words) 
      { 
       tempNumber[i++] = Integer.valueOf(s); 
      } 

    //  Set i to - so it can be reused. 
      i = 0; 

    //  Create a new tempNumber array with number length 
      String[] tempString = new String[numbers.length]; 
    //  Enter each int to the tempNumber array 
      for(int n : numbers) 
      { 
       tempString[i++] = String.valueOf(n); 
      } 

    //  Set numbers array to the one we created. 
      numbers = tempNumber; 
    //  Set string Array to the one we created; 
      words = tempString; 

    //  Output the result 
      System.out.println("The numbers array has: "+Arrays.toString(numbers)); 
      System.out.println("The string array has: "+Arrays.toString(words)); 

    //  Output~~~~~~~~~~~~~~~~ 
    //  The numbers array has: [6, 7, 8, 9, 10] 
    //  The string array has: [1, 2, 3, 4, 5] 
     } 
+0

Я попытался реализовать это. Проблема в том, что оба массива стали ints. Это недопустимо. 1-5 предполагается стать струнами, а 6-10 - стать ints. Помимо этого он отлично работает – Werner

0

Есть, вероятно, более простые способы, но я сделал это так:

public static void main(String[] args) 
{ 
    int[] numbers = {1,2,3,4,5}; 
    String[] words = {"6", "7", "8", "9", "10"}; 
    int[] mixed = new int[numbers.length + words.length]; 

    //loop through all numbers in the numbers[] array and put them in mixed 
    for (int i = 0; i < numbers.length;) 
    { 
     mixed[i] = numbers[i]; 
     i++; 

     //if i reached the length of the numbers[] array, do the following: 
     if (i >= numbers.length) 
     { 
      //continue using the i variable as index indicator while adding converting the string values into integers and adding them to the mixed[] array 
      for (int b = 0; b < numbers.length; b++) 
      { 
       mixed[i] = Integer.valueOf(words[b]); 
       i++; 
      } 
      break; 
     } 
    } 

    //print array 
    for (int x : mixed) 
    { 
     System.out.print(x + " | "); 
    } 
} 
}