向后打印数组 - 不打印最后一个条目! - java

时间:2015-05-09 17:44:39

标签: java arrays string java.util.scanner

我正在尝试创建一个字符串还原程序,我在其中输入字符串并将它们存储在数组中 - 阵列完成后,将打印内容向后 - 如果用户输入退出,程序将停止并向后打印而不在数组中存储退出

但是我的代码不打印最后一个条目我不知道为什么?

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

2 个答案:

答案 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(向后打印数组)