【问题标题】:Printing Array Backwards - Not printing the last Entry! - java向后打印阵列 - 不打印最后一个条目! - 爪哇
【发布时间】:2015-05-09 17:44:39
【问题描述】:

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

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

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

【问题讨论】:

  • 考虑使用 ArrayList 而不是数组,因为在您的示例中,用户必须输入 Strings 的数量,但之后可以提前退出 - 这没有任何意义。使用ArrayList,您可以添加新条目,直到用户键入“退出”而不询问之前的号码。

标签: java arrays string java.util.scanner


【解决方案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;
    }
}

您想在循环的开头而不是结尾处读取新行。

【讨论】:

  • 刚试了这段代码,好像没什么区别
【解决方案2】:

我可以在您的代码中找到的唯一问题是在 nextInt() 之后跳过该行。nextInt() 方法不会消耗整行它只会将输入的下一个标记作为 int 消耗,因此您在同一行(您在哪里阅读 int)并且您必须跳过该行。通过在 scan.nextInt(); 之后执行 scan.nextLine();

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

【讨论】:

    猜你喜欢
    • 2012-08-15
    • 2021-03-11
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    相关资源
    最近更新 更多