2014-11-12 3 views
-4

Я пытаюсь написать код, который получает в качестве входных данных массив строк, и создает двухмерную матрицу типа char, количество строк равно количеству слов в строке и в каждой строке есть обратный массив букв в слове.Почему я получаю дополнительный вывод в моем коде?

например, если мой вход: начало в конце!

мой выход будет:

[т, г, а, т, s]

[т, а]

[е, ч, т]

[! , д, п, е]

Это мой код:

public static void main(String[] args) { 

    char thelist[][] = new char[args.length][]; 
    for (int i = 0; i < args.length; i++) { 
     thelist[i] = new char[args[i].length()]; 

     for (int k = 0; k < args[i].length(); k++) { 
      char letter = args[i].charAt(args[i].length() - k - 1); 
      thelist[i][k] = letter; 
     } 

     for (char[] word : thelist) { 
      String list = Arrays.toString(word); 
      System.out.println(list); 
     } 
    } 
} 
+1

И в чем ваш вопрос? – fxm

+0

какой выход вы получаете?! – yurib

+0

хорошая домашняя работа ... –

ответ

0

Код должен выглядеть так:

String str ="start at the end!"; 
    String[] splitString = str.split(" "); 
    int length=0; 
    for(String string:splitString){ 
     if(string.length()>length){ 
      length=string.length(); 
     } 
    } 
    Character[][] charArray = new Character[splitString.length][length]; 
    int index=0; 
    for(String string:splitString){ 
     length=string.length(); 
     for(int i=0;i<string.length();i++){ 
      charArray[index][--length]=string.charAt(i); 
     } 
     index++; 
    } 

    for (int i=0;i<charArray.length;i++){ 
     for (int j=0;j<charArray[i].length && charArray[i][j]!=null;j++) { 
      System.out.print(charArray[i][j]); 
     } 
     System.out.println(); 
    } 

ВЫВОД:

trats 
ta 
eht 
!dne 
0

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

Вот почему вы видите результаты в виде

[row1] 
null 
null 
null 
[row1] 
[row2] 
null 
null 
[row1] 
[row2] 
[row3] 
null 
[row1] 
[row2] 
[row3] 
[row4] 

Чтобы решить эту проблему, просто поместите петлю, отвечающую за печать за пределы контура, ответственного в генерации контента результирующего массива (помните, что отступы не несет ответственности за обзорные но размещения { и } скобки есть, поэтому переместите один } от конца до печати петли). Поэтому измените код на

char thelist[][] = new char[args.length][]; 
for (int i = 0; i < args.length; i++) { 
    thelist[i] = new char[args[i].length()]; 

    for (int k = 0; k < args[i].length(); k++) { 
     char letter = args[i].charAt(args[i].length() - k - 1); 
     thelist[i][k] = letter; 
    } 
} 

for (char[] word : thelist) { 
    String list = Arrays.toString(word); 
    System.out.println(list); 
} 
0

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

public static void main(String[] args) { 

    char thelist[][] = new char[args.length][]; 
    for (int i = 0; i < args.length; i++) { 
     thelist[i] = new char[args[i].length()]; 

     for (int k = 0; k < args[i].length(); k++) { 
      char letter = args[i].charAt(args[i].length() - k - 1); 
      thelist[i][k] = letter; 
     } 
    } 

    for (char[] word : thelist) { 
      String list = Arrays.toString(word); 
      System.out.println(list); 
    } 
} 
+0

Фрагменты кода предназначены для примеров кода, которые могут выполняться браузером (HTML/JavaScript/CSS). Код Java должен быть помещен в Code Sample (представлен в редакторе '{}'). – Pshemo

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