2010-01-12 7 views
2

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

3 
red 
blue 
green 

а затем печатает тот же текст, но в обратном порядке, поэтому было бы

green 
blue 
red 

следует пустая строка, указывающая на сервер, который вы сделали с этой конкретной проблемы. Но у меня, похоже, есть ошибка в моем коде.

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

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

Кажется, что слова с сервера не хранятся в массиве, и я не уверен, что я делаю неправильно. Я не самый лучший программист, поэтому любая помощь будет очень оценена.

Кодекс:

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

public class Solution 
{ 
    public static void run(BufferedReader in, PrintWriter out) 
     throws IOException 
    { 
     int x = Integer.parseInt(in.readLine()); 

     while(x != 0) 
     { 
      ArrayList num = new ArrayList(); 

      for(int i = 0; i < num.size(); i++) 
      { 
       //String f = in.readLine(); 
       num.add(in.readLine()); 
      } 
      //System.out.println(num); 

      for(int i = num.size()-1; i > 0; i--) 
      { 
       out.println(num.get(i)); 

       //x = Integer.parseInt(in.readLine()); 
       System.out.println(); 
      } 
      break; 
     } 
     out.flush(); 
    } 
} 
+0

домашнее задание? ....... –

+1

Это весь ваш код? Где «главное»? –

ответ

3

Петля, никогда не останавливается

EDIT: К сожалению, нет, это не так, но то, что есть смысл иметь время цикла, который выполняется один раз? Вы положили перерыв в конце, так что, может быть, вы могли бы реорганизовать это на if? Может быть, охранник?

9
ArrayList num = new ArrayList(); 

for(int i = 0; i < num.size(); i++) 

означает, что вы идете от 0 до ... 0!

for(int i = 0; i < x; i++) 

было бы лучше.

2

Размер NUM здесь 0. Вы должны использовать «х» вместо num.size()

 for(int i = 0; i < num.size(); i++) 
     { 
      //String f = in.readLine(); 
      num.add(in.readLine()); 

     } 
0

Это не может быть точно, что вы сделали .. немного другой ..: -)

int x = Integer.parseInt(in.readLine()); 
String[] arr = new String[x]; // Edited :: Slip of mind - Thanks Pgras  
for(int i=0;i<x;i++){ //input x number of words and store.. 
arr[i] = in.readLine(); 
} 

for(i=x-1;i>=0;i--){ //Display words in reverse order 
System.out.println(arr[i]); 
} 
+0

Почему вы не пишете String [] arr = new String [x]; ??? – pgras

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