如何比较java中数组中的null元素?

时间:2013-09-07 00:26:09

标签: java arrays for-loop arraylist

我有一个程序,我需要将结果存储在一个arraylist中: -

public class ReseedingDBRandomElements {

    public static void main(String[] args){

        try {

            // getting the field Keyword from the csv
            String csvfile="/Users/dray/Downloads/ReseedingDBRandomKeywords.csv";

            BufferedReader br =new BufferedReader(new FileReader(csvfile));
            StringTokenizer st = null;
            String line="";
            int linenumber=0;
            int columnnumber;

            // initializing the parameter for each column
            int free = 0;
            int free1 = 0;



            // create the ArrayList

            ArrayList<String> Keyword = new ArrayList<String>();
            ArrayList<String> Alternate = new ArrayList<String>();


            // reading through the csv file
            while((line=br.readLine())!=null){
                linenumber++;
                columnnumber = 0;

                st = new StringTokenizer(line,",");
                while(st.hasMoreTokens()){
                    columnnumber++;
                    String token = st.nextToken();
                    if("Keyword".equals(token)){
                        free=columnnumber;
                        System.out.println("The value of free :"+free);
                    }else if ("Alternate".equals(token)){
                        free1=columnnumber;
                        System.out.println("The value of free1 :"+free1);
                    }

                    if(linenumber>1){

                        if (columnnumber==free)
                        {
                            Keyword.add(token);
                        }else if (columnnumber==free1){
                            Alternate.add(token);
                        }
                    }
                }
            }

            // converting the keyword ArrayList to an array
            String[] keyword = Keyword.toArray(new String[Keyword.size()]);
            for(int i=0;i<keyword.length;i++){
                System.out.println(" The value of the keyword is :"+keyword[i]);
            }

            // converting the alternate ArrayList to an array
            String[] alternate = Alternate.toArray(new String[Alternate.size()]);
            for(int i=0;i<alternate.length;i++){
                System.out.println("The value of the alternate is :"+alternate[i]);
            }

            ArrayList<String> AlternateNew = new ArrayList<String>();


             for(int i=1;i<keyword.length;i++){
            if(keyword[i].equals(keyword[i-1])){
                AlternateNew.add(alternate[i-1]);
            }else if(!(keyword[i]==(keyword[i-1]))){
                AlternateNew.add(alternate[i]);
            }
        }


            String[] alternatenew = AlternateNew.toArray(new String[AlternateNew.size()]);
            System.out.println("The length of the array is :"+alternatenew.length);
            for(int i=0;i<alternatenew.length;i++){
                System.out.println("the value of the alternatenew :"+alternatenew[i]);
            }




        }catch (Exception e){
            System.out.println("there is an error :"+e);
        }

    }
}

以下是csv文件

Keyword,Alternate
ego kit,baby doll
ego kit,garage park
ego kit,random beats
galaxy tab,venus
galaxy tab,earth
galaxy tab,sun

我要做的是比较元素并将其存储在arraylist中并显示结果,但是当最后一个元素被比较时,即'galaxy tab'与最后一个'galaxy tab'之后的空字段进行比较,它没有将先前的结果存储在'sun'

的arraylist中

以下是该计划的结果:

The value of the alternate is :baby doll
The value of the alternate is :garage park
The value of the alternate is :random beats
The value of the alternate is :venus
The value of the alternate is :earth

最后一个元素没有存储在arraylist中。

不明白为什么? Java编程新手。

1 个答案:

答案 0 :(得分:1)

本节还有一些问题

        AlternateNew.add(alternate[0]);
        for(int i=1;i<keyword.length;i++){
            if(keyword[i]==(keyword[i-1])){
                AlternateNew.add(alternate[i]);
            }else if(!(keyword[i]==(keyword[i-1]))){
                AlternateNew.add(alternate[i]);
            }
        }
  1. Java中的命名约定是以变量名称的小写字母开头(除非它是常量),这就是为什么对象AlternateNew被突出显示为类名。

  2. else if块测试的条件与if相同。您可以注释掉if(!(keyword[i]==(keyword[i-1])),删除或用更易读的提醒注释替换它,结果也是一样。

  3. AlternateNew.add(alternate[i]);无论在if的任何一个分支中都出现这种情况,所以要么完全删除if语句,要么修正一些错字。

  4. 至于你的实际[编辑:原创]问题,我找不到任何错误。你确定你没有忘记保存csv文件吗?我使用文本文件运行它,输出与你的帖子相反!