2016-09-04 4 views
1

У меня есть проблемы с моим кодом ниже:Строка символов массива

public class stringToChar { 
public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    int n = in.nextInt(); 
    char[] sCharArr; 
    String[] odd = new String[n]; 
    String[] even = new String[n]; 
    for(int i = 0; i < n; i++) { 
     sCharArr = in.next().toCharArray(); 
     for(int j = 0; j < sCharArr.length; j++) { 
      if(j % 2 == 0) 
       even[i] += sCharArr[j]; 
      else 
       odd[i] += sCharArr[j]; 
     } 
    } 
    for(int i = 0; i < n; i++) { 
     System.out.println(even[i] + " " + odd[i]); 
    } 
} 
} 

Моя проблема на выходе она имеет в итоге Null. Вот пример сценария:

2 
John 
Cena 

Ответ должен быть:

Jh on 
Cn ea 

Но мой код ответа:

NullJh Nullon 
NullCn Nullea 

ответ

1

Ваша проблема заключается в том, что новые массивы инициализируются со всеми нуль Струны. Тогда ваш код не присвоение значений всем элементам массива, а только некоторым из них!

Наконец вы напечатать массив, и удивление, те ценности, которые были утратившими, которые не были изменены - по-прежнему пусто (и при печати пустой строки ... она печатает «нуль» [да, п Улла, не N Улла, вы получили маленькую ошибку там в выходном примере]

вы видите, вы итерацию от 0 до длины ваших двух массивов А если число четное, вы. поместите значение в четное [i], а если значение нечетное, оно переходит в нечетное [i]. Давайте возьмем четное - в этом случае нечетное [i] просто останется нулевым!

Один из способов исправить это:

List<String> even = new ArrayList<>(); 
List<String> odd = new ArrayList<>(); 

И теперь, вместо того, чтобы определенный индекс в чет/нечет; Вы просто сделать:

even.add(some new value); 

и добавить эти одиночные символы:

even.add(new String(sCharArr)); 

Поступая таким образом, даже и нечетные воли (в конце концов) содержат одни и те значения, которые вы добавили в каждый список; но нет «остаточных» нулей. Для записи: способ разделения строк, а затем вывести их обратно в массив строк - это не самый простой/прямой способ решения проблемы.

Но я оставляю «дальнейшие» упрощения»в качестве упражнения для пользователя.

+0

Спасибо !! Очень полезно и познавательно, это ответ на мой вопрос! – Cham

+0

Я пытался добавить свое предложение, но я не могу добавить один символ в списке Я предполагаю, что он должен быть добавлен в тип String. Но поскольку я преобразовал String в charArray, как я могу добавить символ в список ? – Cham

+0

См. мой обновленный ответ. – GhostCat

Смежные вопросы