преобразовать массив чисел в массив слов - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь преобразовать массив чисел в массив слов, например:

{1,2} будет преобразовано в {"one","two"}

, так что это код, который я пишу в Java:

public static void main(String[] args) {

    ArrayList<Integer> list1 = new ArrayList<>(Arrays.asList(1,2));

    Integer [] list1Array = list1.toArray(new Integer[0]);
    int numLength2 = list1.size();
    for(int i = 0; i < numLength2; i++){
        System.out.println(list1Array[i]);
     }   
    System.out.println(numLength2);
    String n2 = ""; 
    for(int j = 0; j < numLength2; j++) {
       int element = list1.get(j);
       System.out.println(element);
       switch (element) {
              case '1': {  
                    n2 = n2 + "one";
                    break;
                }
              case '2': { 
                    n2 = n2 + "two";
                    break;
                }

                default: {
                    n2 = n2 + "zero";
                }
            }
        }
        System.out.println(n2);
    }
}

Работает нормально, кроме последнего отпечатка:

 System.out.println(n2);

Здесь выводится zerozero, тогда как должно быть onetwo.В чем проблема с кодом?

Ответы [ 4 ]

0 голосов
/ 22 октября 2018

Вы могли бы добиться того же с помощью этих нескольких строк кодов вместо своего forloop и switch.

public static void main(String[] args) {
    List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 5, 4));
    String[] numArray = { "zero", "one", "two", "three", "four", "five" };

    for (Integer num : list1) {
        System.out.print(numArray[num]);
    }
}

Это печатает,

onetwofivefour

Теперь, как вы сказали, вы хотите создатьсписок типа {"один", "два"}, вы можете сделать что-то вроде этого,

public static void main(String[] args) {
    List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 5, 4));
    String[] numArray = { "zero", "one", "two", "three", "four", "five" };
    List<String> wordList = new LinkedList<String>();

    for (Integer num : list1) {
        wordList.add(numArray[num]);
    }
    System.out.println(wordList); // prints [one, two, five, four]
}
0 голосов
/ 22 октября 2018

case '1', '1' - это тип char, но element - это int

0 голосов
/ 22 октября 2018

Также, если вы измените эту строку и программа будет работать:

int element = '0' + list1.get(j);
0 голосов
/ 22 октября 2018

element - это int, но вы сравниваете его с литералом char.Вы должны использовать int литералы вместо:

switch (element) {

    case 1: {  
        n2 = n2 + "one";

        break;
    }
    case 2: { 
        n2 = n2 + "two";
        break;
    }

    default: {
        n2 = n2 + "zero";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...