以反向顺序将多行写入标准输出

时间:2013-09-27 10:04:02

标签: java

我想在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]);
}
}

6 个答案:

答案 0 :(得分:2)

为什么不使用Stack<String>缓冲线?然后只需弹出每一行并输出即可。

答案 1 :(得分:1)

以下是带输出的代码:

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 :(得分:0)

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

答案 3 :(得分:0)

你得到ArrayIndexOutOfBoundsException吗?错误在于:

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

在该循环的第一步中,您尝试打印不存在的str [n]。 您的数组由n个元素组成,编号从0到n-1。

正确的代码是:

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

答案 4 :(得分:0)

您需要从n-1开始,因为数组中可访问的最大索引为array.length-1

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

您还需要进行此更改: -

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

s.nextInt()可以正确读取下一个整数,但是之后输入的输入将作为数组的第一个元素使用。为了避免这种情况,你可以像我上面提到的那样做。

答案 5 :(得分:0)

您无需执行任何操作,只需使用以下代码替换代码中的行 -

int n = s.nextInt()+1;