我正在尝试创建一个字符串还原程序,我在其中输入字符串并将它们存储在数组中 - 阵列完成后,将打印内容向后 - 如果用户输入退出,程序将停止并向后打印而不在数组中存储退出
但是我的代码不打印最后一个条目我不知道为什么?
import java.util.*;
import java.io.*;
class StringRevert {
public static void main(String[] args) {
String buffer[];
Scanner scan = new Scanner(System.in);
System.out.println("Enter Size: ");
int num = scan.nextInt();
buffer = new String[num];
String read = scan.nextLine();
for(int i=0; i<buffer.length; i++) {
if(read.equals("quit")) {
break;
} else {
buffer[i] = read;
}
read = scan.nextLine();
}
for(int k=buffer.length -1; k>=0; k--) {
System.out.println(buffer[k]);
}
}
}
答案 0 :(得分:1)
用以下代码取代你的for循环:
String read = null;
for(int i=0; i<buffer.length; i++) {
read = scan.nextLine();
if(read.equals("quit")) {
break;
} else {
buffer[i] = read;
}
}
您想要在循环开始时读取新行,而不是在结尾处读取。
答案 1 :(得分:1)
我可以在代码中找到的唯一问题是跳过nextInt()
之后的行。nextInt()
方法不消耗整行,它只消耗输入的下一个标记作为int,所以你是在同一行(您读取int),您必须跳过该行。在scan.nextLine();
之后执行scan.nextInt();
String buffer[];
Scanner scan = new Scanner(System. in );
System.out.println("Enter Size: ");
int num = scan.nextInt();
buffer = new String[num];
scan.nextLine(); // skipping the line
String read = scan.nextLine();
for (int i = 0; i < buffer.length; i++) {
if (read.equals("quit")) {
break;
} else {
buffer[i] = read;
}
read = scan.nextLine();
}
for (int k = buffer.length - 1; k >= 0; k--) {
System.out.println(buffer[k]);
}
Demo(向后打印数组)