繁体   English   中英

无法使字符串compareTo方法正常工作

[英]Can't get Strings compareTo method to work

由于某种原因,我无法使Strings compareTo方法正常工作。 我收到此错误消息:

exception in thread main java.lang.NullpointerException
at java.lang.String.compareTo(Unknown Source)
at Sort.main(Sort.java:27)

我该怎么做才能解决此问题? (此代码要求to数组已准备好单独排序。)

import java.util.*;

class Sort{
    public static void main(String[] args){
        String[] ord = new String[6];
        ord[0] = "astra";
        ord[1] = "bilum";
        ord[2] = "deliber";
        ord[3] = "kaliber";
        ord[4] = "suppe";
        ord[5] = "vorte";

        String[] ordet = new String[6];
        ord[0] = "akilles";
        ord[1] = "kopper";
        ord[2] = "lipton";
        ord[3] = "mus";
        ord[4] = "orkester";
        ord[5] = "toving";

        String[] flettet = new String[ord.length + ordet.length];

        for(int i = 0; i < ord.length; i++){
            int teller = i; 
            for(int j = 0; j < ordet.length; j++){
                if(ord[i].compareTo(ordet[j]) > 0){ //line 27
                    teller += 1;
                }
            }
            flettet[teller] = ord[i];
        }
    }   
}

您的意思是-好像您设置了错误的数组:

    String[] ordet = new String[6];
    ordet[0] = "akilles";
    ordet[1] = "kopper";
    ordet[2] = "lipton";
    ordet[3] = "mus";
    ordet[4] = "orkester";
    ordet[5] = "toving";

您永远不会将任何值分配给ordet。 所以compareTo将字符串与NULL比较

    String[] ord = new String[6];
    ord[0] = "astra";
    ord[1] = "bilum";
    ord[2] = "deliber";
    ord[3] = "kaliber";
    ord[4] = "suppe";
    ord[5] = "vorte";

    String[] ordet = new String[6];
    ord[0] = "akilles";                //overwriting ord[0]
    ord[1] = "kopper";                 //overwriting ord[1]
    ord[2] = "lipton";                 //overwriting ord[2]
    ord[3] = "mus";                    //overwriting ord[3]
    ord[4] = "orkester";               //overwriting ord[4]
    ord[5] = "toving";                 //overwriting ord[5]

String[] ordet = new String[6]; ord[0] = "akilles"; ord[1] = "kopper"; ord[2] = "lipton"; ord[3] = "mus"; ord[4] = "orkester"; ord[5] = "toving"; 您从未填充过ordet数组,只是ordetord数组。 此时, ordet数组中没有元素,只有null

所以...

if(ord[i].compareTo(ordet[j]) > 0){ //line 27正在与不存在的元素进行比较,并且#compareTo引发NullPointerException,因为您传入的是null而不是String

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM