Java 正在消失的Arraylist值
我正在编写一个Java程序,它将把一个句子(或短语)翻译成一组计算机可以轻松阅读的对象。我想做一个简单的分词程序,然后在以后扩展它 我的代码如下:Java 正在消失的Arraylist值,java,string,arraylist,Java,String,Arraylist,我正在编写一个Java程序,它将把一个句子(或短语)翻译成一组计算机可以轻松阅读的对象。我想做一个简单的分词程序,然后在以后扩展它 我的代码如下: package Literary; import java.util.ArrayList; public class WordParser { public static String[] getWords(String tempone){ ArrayList<String> temptwo = new ArrayList(
package Literary;
import java.util.ArrayList;
public class WordParser {
public static String[] getWords(String tempone){
ArrayList<String> temptwo = new ArrayList();
ArrayList<Character> tempthree = new ArrayList();
for (int tempfour = 0; tempfour == tempone.length() - 1; tempfour++){
if (tempone.charAt(tempfour) != ' '){
tempthree.add(tempone.charAt(tempfour));
} else {
temptwo.add(getStringRepresentation(tempthree));
tempthree.clear();
}
}
String[] tempfive = new String[temptwo.size()];
for (int tempfour = 0; tempfour == tempfive.length - 1; tempfour++){
tempfive[tempfour] = temptwo.get(tempfour);
}
return tempfive;
}
/** Courtesy of Vineet Reynolds on StackExchange.
*
* "You can iterate through the list and create the string."
*
* @param list
* @return
*/
public static String getStringRepresentation(ArrayList<Character> list){
StringBuilder builder = new StringBuilder(list.size());
for(int i = 0; i == list.size() + 1; i++)
{
builder.append(list.get(i).charValue());
}
return builder.toString();
}
}
控制台只告诉我运行:和构建成功(总时间:1秒)
如果有帮助的话,我正在使用Netbeans 8和Java 1.7。问题似乎在这里:
for (int i = 1; i == tempstring.length; i++) {
这个for循环最多运行一次:如果tempstring
正好是一个String
长,它应该打印出单词
但是,由于您的测试句子有8个单词,因此不会输出任何内容(前提是WordParser
工作正常)
您可能希望将这一行更改为:(注意,
看起来问题就在这里:
for (int i = 1; i == tempstring.length; i++) {
这个for循环最多运行一次:如果tempstring
正好是一个String
长,它应该打印出单词
但是,由于您的测试句子有8个单词,因此不会输出任何内容(前提是WordParser
工作正常)
您可能想将这一行更改为:(注意,我认为您应该使用似乎做同样事情的方法我认为您应该使用似乎做同样事情的方法如下更改您的主要方法,
它会起作用的
public static void main(String[] args) {
String x = "There was once a sword in the stone";
String[] tempstring = WordParser.getWords(x);
for (int i = 1; i <= tempstring.length; i++){
System.out.println("Word " + i + " : " + tempstring[i - 1]);
}
}
改变你的主要方法如下:,
它会起作用的
public static void main(String[] args) {
String x = "There was once a sword in the stone";
String[] tempstring = WordParser.getWords(x);
for (int i = 1; i <= tempstring.length; i++){
System.out.println("Word " + i + " : " + tempstring[i - 1]);
}
}
您的代码中存在多个问题:
1) 对于未正确创建的循环,它们将永远不会执行。请使用!=,>或您的代码中存在多个问题:
1) 因为没有正确地创建循环,它们永远不会执行。使用!=,>或者首先,我建议使用拆分法来拆分句子
其定义如下:
public String[] split(String regex, int limit)
你只要打个电话就可以了
String s1=new String("Random words in a sentence");
String[] words=s1.split(" ");
为了将字符串分解为单词,您现在将拥有一个字符串
由五个元素组成的数组,其中每个元素由一个单词组成
关于你的问题,你没有正确使用条件语句
当位置
小于stringname.length,而不仅仅是在其位置等于stringname.length时
因此,必须对代码的这些部分进行以下更改
例如:
for (int i = 1; i == tempstring.length; i++)
应该把它的线路改成
for (int i = 1; i < tempstring.length; i++)
for(int i=1;i
这个问题也发生在WordParser.java文件的不同位置
还需要记住的是,您可能经常希望从索引0开始
对于索引1,因为java的第一个标记是0。首先,我建议使用split方法来分解一个句子
其定义如下:
public String[] split(String regex, int limit)
你只要打个电话就可以了
String s1=new String("Random words in a sentence");
String[] words=s1.split(" ");
为了将字符串分解为单词,您现在将拥有一个字符串
由五个元素组成的数组,其中每个元素由一个单词组成
关于你的问题,你没有正确使用条件语句
当位置
小于stringname.length,而不仅仅是在其位置等于stringname.length时
因此,必须对代码的这些部分进行以下更改
例如:
for (int i = 1; i == tempstring.length; i++)
应该把它的线路改成
for (int i = 1; i < tempstring.length; i++)
for(int i=1;i
这个问题也发生在WordParser.java文件的不同位置
还需要记住的是,您可能经常希望从索引0开始
索引1,因为java的第一个标记是0。您使用的是maven吗?听起来你只是构建了你的类,而不是执行它。您正在执行什么任务?不,是Netbeans,我知道执行的是主类,因为当我将另一个System.out.println放在for循环之外时,它出现在控制台中。问题:为什么不使用.split(“”)之类的方法来分解句子?或者你更多的是作为一种锻炼吗?你在用maven吗?听起来你只是构建了你的类,而不是执行它。您正在执行什么任务?不,是Netbeans,我知道执行的是主类,因为当我将另一个System.out.println放在for循环之外时,它出现在控制台中。问题:为什么不使用.split(“”)之类的方法来分解句子?或者你这样做更多的是为了锻炼?你可能想解释一下他需要做什么改变才能让它正常工作。简短的版本:for循环在测试为真时继续运行,直到is为真。我甚至没有考虑过循环。谢谢你的帮助!你可能想解释他需要做什么改变才能让它工作。简短的版本:for循环在测试为真时继续运行,直到is为真。我甚至没有考虑过循环。谢谢你的帮助!是的,但是如果OP这样做是为了家庭作业或者作为练习呢?是的,但是如果OP这样做是为了家庭作业或者作为练习呢?