我被要求创建一个方法,在该方法中我输入一个String序列并创建一个存储String的单词的数组。到目前为止,这就是我所拥有的:
public class Tester{
public static String[] split(String s) {
// determine the number of words
java.util.Scanner t = new java.util.Scanner(s);
int countWords = 0;
String w;
while (t.hasNext()) {
w = t.next();
countWords++;
}
// create appropriate array and store the string’s words in it
// code here
String[] words = new String[4]; // Since you are using an array you have to declare
// a fixed length.
// To avoid this, you can use an ArrayList
// (dynamic array) instead.
while (t.hasNext()) {
w = t.next();
words[countWords] = w;
countWords++;
}
return words;
}
}
现在我必须使用字符串 one two three four 作为参数调用方法 split 。如果我听起来天真,我道歉。我是编程新手。我一直在观看大量的教程,但是当我尝试调用该方法时,我的代码不断获得红色标记。
*代码的前14行(来自'公共类'到这里的代码')是提供给我的问题的一部分,所以他们不应该这样做。改变。如有必要,您可以更改其余代码。
编辑:
如何创建调用split方法的main方法?这就是我试过的:
class Demo
{
public static void main(String[]args)
{
Tester object = new Tester();
object.split(s);
System.out.println(words[i]);
}
}
基本上,我创建了另一个调用split方法的类。但是,我一直在拿红色标记。
答案 0 :(得分:0)
在第一次while (t.hasNext ())
循环后,您的t
扫描程序已用尽。
你需要重新创建它,以便从头再次开始:
String[] words = new String[countWords]; // the size is countWords
t = new java.util.Scanner (s); // recreate the scanner
int index = 0;
while (t.hasNext()) {
words[index++] = t.next();
}
return words;
答案 1 :(得分:0)
在评论中,有一个说明。由于您使用的是字符串数组String[] words
,因此您需要确定地知道数组的长度,以便正确初始化它,填充并使用它。
首次浏览扫描程序t
,了解作业给你的字符串数。
int countWords = 0;
while (t.hasNext()) {
w = t.next();
countWords++;
}
这意味着您至少还需要一步来填补它。现在你知道countWords
,你给出的单词数量,你可以初始化你的数组。
String[] words = new String[countWords]
你有一个countWords
数组 - 数字为空的String
个对象。是时候填补它们了。
我们现在将进行第二次循环并填充我们的words
字符串数组
int i = 0;
while (t.hasNext()) {
words[i] = t.next();
i++;
}
就是这样。现在将其返回给调用者。
return words
请按照我在第一篇文章中的评论中的说法,阅读如何正确缩进。如果没有正确缩进,你真的无法编写/读取代码。
答案 2 :(得分:0)
首先,您根本不需要计算单词数。相反,这可以简单地完成
ArrayList<String> wordsList = new ArrayList<String>(); This list will contain all your words
t = new java.util.Scanner (s);// scanner
while (t.hasNext()) {
wordsList.add(t.next());
}
return wordsList.toArray();
使用它的优点是您不需要为数组或列表初始化任何大小。