您的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。
答案 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)