Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正在消失的Arraylist值_Java_String_Arraylist - Fatal编程技术网

Java 正在消失的Arraylist值

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(

我正在编写一个Java程序,它将把一个句子(或短语)翻译成一组计算机可以轻松阅读的对象。我想做一个简单的分词程序,然后在以后扩展它

我的代码如下:

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这样做是为了家庭作业或者作为练习呢?