我想在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 :(得分: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;