Странная ошибка, которую я не могу найти - PullRequest
2 голосов
/ 12 января 2010

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

3 
red 
blue
green

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

green 
blue 
red

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

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

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

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

Код:

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();
    }
}

Ответы [ 4 ]

9 голосов
/ 12 января 2010
ArrayList num  = new ArrayList();

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

означает, что вы переходите от 0 к ... 0!

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

будет лучше.

3 голосов
/ 12 января 2010

Цикл while никогда не останавливается

РЕДАКТИРОВАТЬ: Ой нет, это не так, но какой смысл иметь цикл while, который выполняется один раз? Вы ставите перерыв в конце этого, так что, может быть, вы могли бы преобразовать это в if? Может быть, охранник?

2 голосов
/ 12 января 2010

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

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

        }
0 голосов
/ 12 января 2010

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

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]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...