0

我有一个任务:
“从命令行发送整数 n [1 .. 10]。在控制台中输入 n 行,找到最短和最长的行。打印结果和行长。”

我的想法是:创建字符串数组并将每一行复制BufferedReader到数组data[i]中。我的代码示例:

String[] data = new String[n];
int j=0;

for (int i = 1; i <= n; i++) {
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Please, enter " + i + " string: ");
    String line = in.readLine();
    for (int j=0; j<=data.length;j++){
      data[j] = line;
      j++;  
    } ///:~

    System.out.println("Your " + i + " string : " + data[j] + "String len: " + line.length());
} ///:~

但我找不到如何data[i]用控制台的新行填充数组元素的方法。
你能给我一个小提示吗?

4

3 回答 3

1

要填充data,只需使用 index 用简单的赋值替换内部 for 循环i-1

for (int i = 1; i <= n; i++) {
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Please, enter " + i + " string: ");
    String line = in.readLine();
    data[i-1] = line;
    System.out.println("Your " + i + " string : " + data[i-1] + "\nString len: " + line.length());
}

我离开循环 from 1ton而不是0ton-1因为你正在打印i.

但是如果你只想要最短和最长的线,则不需要存储所有的线,你只需要检查当前线的长度和最短和最长的线的长度并适当地改变它们。

于 2013-09-09T08:51:10.240 回答
0

谢谢大家的帮助:)这是我的例子:

package taskstring;

import java.io.*;

public class TaskString {

    public static void main(String[] args) throws java.lang.Exception {
        int n = Integer.parseInt(args[0]);
        if (n <= 0) {
            System.out.println("Wrong! please send more numbers to java");
            return;
        }
        System.out.println("Enjoy! You are going to send " + n + " string(s) to java");
        int maxLen = 0;
        int minLen = 0;

        for (int i = 1; i <= n; i++) {
            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Please, enter " + i + " string: ");
            String line = in.readLine();
            System.out.println("Your " + i + " string : " + "String len: " + line.length());
            if (maxLen < line.length()) {
                System.out.println("New string is bigger");
                maxLen = line.length();
            } else {
                System.out.println("New string is smaller");
            }


            if (minLen > line.length() || minLen == 0) {
                System.out.println("New string is smaller" + " minLen=" + minLen);
                minLen = line.length();



            } else {
                System.out.println("New string is bigger");
            }

            //return;
        } ///:~
        System.out.println("Max row: " + maxLen + "\nMin row: " + minLen);

    } ///:~
}
于 2013-09-15T10:36:20.213 回答
0

最简单的方法是

data[i-1] = in.readLine();
于 2013-09-09T09:12:13.327 回答