簡體   English   中英

如何與Java中數組中的null元素進行比較?

[英]How to compare against a null element in an array in java?

我有一個程序需要將結果存儲在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”之后的空白字段進行比較時,它不存儲arraylist中的先前結果是“ sun”

以下是程序的結果:

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編程的新手。

此部分在整個過程中也存在一些問題

        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語句或修復某些拼寫錯誤。

至於您的實際[edit:original]問題,我找不到任何錯誤。 您確定您沒有忘記保存csv文件嗎? 我使用一個文本文件運行它,並得到與您的帖子相反的輸出!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM