2013-09-27 3 views
0

Я хочу написать программу в java, которая берет все строки, вводимые на стандартный вход, и записывает их на стандартный вывод в обратном порядке. это код, но у него есть ошибка, и я не могу понять, где проблема. (Вначале в этой программе я запрашиваю количество строк, а затем сохраняю их в 'n'.) любая помощь? заранее спасибопишет несколько строк на стандартный вывод в обратном порядке

package getLine; 
import java.util.Scanner; 
public class S { 
    public static void main(String[] args) 
{ 
    Scanner s= new Scanner(System.in); 
    System.out.println("how many lines do you want to enter"); 
    int n= s.nextInt(); 
    String [] str; 
    str= new String[n]; 
    for(int i=0;i<n;i++) 
     str[i]=s.nextLine(); 
    for(int i=n;i>=0;i--) 
     System.out.println(str[i]); 
} 
} 
+0

пожалуйста, укажите, что ошибка получить у – kTiwari

+0

исключение в потоке «основного» java.lang.ArrayIndexOutOfBoundsException : \t at getLine.S.main (S.java:14 – Linda

+0

@ShN - Проверьте мой ответ. То, как вы потребляете вход, нужно немного изменить. – SudoRahul

ответ

0

Ниже приводится код с выхода:

import java.util.Scanner; 

public class S { 

public static void main(String[] args) { 
    Scanner s = new Scanner(System.in); 
    System.out.println("how many lines do you want to enter"); 
    int n = s.nextInt(); 

    System.out.println("I want to enter " + n + " lines "); 
    n = n + 1; 
    String[] str; 
    str = new String[n]; 
    int count = 0; 
    for (int i = 0; i < n; i++) { 
     str[i] = s.nextLine(); 
     System.out.println(str[i]); 
     count++; 
    } 
    if (count == n) { 
     System.out.println("Reversed output"); 

     for (int i = n - 1; i >= 0; i--) { 
      System.out.println(str[i]); 
     } 
    } 
} 

Выходной :

how many lines do you want to enter 
2 
I want to enter 2 lines 

1 
1 
2 
2 
Reversed output 
2 
1 
2

Почему вы не используете Stack<String> в буфер строки? Затем просто поместите каждую строку и выведите ее.

0
for(int i=n-1;i>=0;i--) 
    System.out.println(str[i]); 
0

Вы получаете ArrayIndexOutOfBoundsException? Ошибка заключается здесь:

for(int i=n;i>=0;i--) 
    System.out.println(str[i]); 

На первом этапе этого цикла вы пытаетесь напечатать ул [п], которая не существует. Ваш массив состоит из n элементов, пронумерованных от 0 до n-1.

Правильный код:

for(int i = n - 1; i >= 0; i--) 
     System.out.println(str[i]); 
0

Вы должны начать с n-1, поскольку максимальный индекс доступен в массиве array.length-1.

for(int i=n-1;i>=0;i--){ 

Кроме того, необходимо сделать это изменение: -

int n= Integer.parseInt(s.nextLine()); 

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

0

Вы не должны делать, чтобы справиться с этим, просто заменить строку в коде следующим code-

int n = s.nextInt()+1; 
Смежные вопросы