如何使Wordat以字符串形式返回页面上该位置的单词。如果行或单词不存在,则返回null

时间:2019-04-15 23:08:17

标签: java arraylist

您的Page类需要一个名为addLine的方法,该方法带有一个String参数,该参数在页面中包含一行。将反复调用此方法,以在您的课程存储的页面上添加行。

您还需要一个名为numLines的方法,该方法返回页面上的行数。

最后,您将需要一个wordAt方法,该方法带有两个参数,行号和单词号,并以String的形式返回页面上该位置的单词。行号和单词号是页面上的行和该行上的单词的基于1的索引。 (第一行是第1行,任何一行上的第一个单词都是单词1)。如果行或单词不存在,则返回null。

我尝试过 public String wordAt(int ln,int wn){         返回行[ln] [wn];

这是我的main.java

    import java.util.Scanner;
    public class Main {
    public static void main(String[] args) {
    Page p = new Page();
    Scanner s = new Scanner(System.in);

    while (s.hasNextLine()) {
        p.addLine(s.nextLine());
    }

    System.out.println("Number of lines: " + p.numLines());
    System.out.println("First word: " + p.wordAt(1, 1));
    System.out.println("Another word: " + p.wordAt(15, 5));
    }
    }

这是针对page.java

    import java.util.ArrayList;
    public class Page {
    private ArrayList <ArrayList <String>> line;
    public Page () {
    line = new ArrayList <ArrayList<String>>();
    line.add(null);

     }

      public void addLine (String ip) {
      ArrayList<String> enter = new ArrayList<String>();
      String[] arr = ip.split(" ");
      enter.add(null);
      for (int i=0; i < arr.length; i++) {
      enter.add(arr[i]);
      }
      line.add(enter);

             }

      public int numLines () {
      int totalnum = line.size() - 1;
      return 0;
      }

      public String wordAt (int ln, int wn) {


      }
      }

代码应以字符串形式返回页面上该位置的单词。如果行或单词不存在,则返回null。

1 个答案:

答案 0 :(得分:0)

    public class Page {

    private final List<String> lines;

    public Page() {
        lines = new ArrayList();        
    }

    public String wordAt(int lineIndex, int wordIndex) {
        lineIndex--; // offset before doing anything
        wordIndex--;
        if (lineIndex < numLines() && lineIndex >= 0) {
            String line = lines.get(lineIndex);
            // split words at each space(s) (one or more space characters)
            // assignment didn't specify what a "word" is.
            String[] split = line.split("[ ]+");
            if (wordIndex >= 0 && wordIndex < split.length) {
                return split[wordIndex];
            }
        }
        return null;
    }

    public int numLines() {
        return lines.size();
    }

    public boolean addLine(String line) {
        return lines.add(line);
    }

}

 public static void main(String[] args) {
        Page page = new Page();        
        page.addLine("Will the real slim shady, please stand up");
        page.addLine("... please stand up, please stand up.");        
        System.out.println(page.wordAt(1, 9)); // should be null
        System.out.println(page.wordAt(1, 1)); // should be Will
        System.out.println(page.wordAt(2, 1)); // should be ... (ellipses)
        System.out.println(page.wordAt(2, 3)); // should be ("stand")
        System.out.println(page.wordAt(3, 1)); // no third line... (null)


    }


Output:
run:
null
Will
...
stand
null
BUILD SUCCESSFUL (total time: 0 seconds)