java中不使用数组按名称对字符串排序

ar5n3qh5  于 2021-07-11  发布在  Java
关注(0)|答案(0)|浏览(173)

我有一个字符串,看起来像这样:

String myString = 
    "1|name|lastname|email|tel" + "\n" + 
    "2|name|lastname|email|tel" + "\n" + 
    "3|name|lastname|email|tel" + "\n" + 
    "4|name|lastname|email|tel" + "\n";

在我的作业中,我不能使用数组或其他类 String 以及 System .
我需要按字母顺序排列名字 compareTo 方法。
我有一个从字符串中检索名称的方法,它是:

public static String getContactName (String contact) {
        StringTokenizer tokenizer = new StringTokenizer(contact, "|");
        String id = tokenizer.nextToken();
        String name = tokenizer.nextToken();

        return name;  
}

我有另一个方法,在字符串中插入联系人。在这里我必须使用 compareTo 方法。

public static String insertContactInString (String myString, String line) {
        int resultat = 0;
        String nomContact = "";
        String nomCarnet = "";
        String contact = "";

        if (myString != null) {
              myString += line + "\n";
              do  {
                    nomContact = getContactName(line);
                    nomCarnet = getContactName(myString);

                    resultat = nomContact.compareToIgnoreCase(nomCarnet);

                    if(resultat < 0) {
                          line = "|" + nomContact;
                          int pipe = line.lastIndexOf("|");
                          contact =contactLigne.substring(0,pipe);
                          line = contact;
                          line = "|" + nomCarnet;
                          pipe = line.lastIndexOf("|");
                          contact = line.substring(0,pipe);
                          line = contact;    
                     } else {
                          contact = "|" + nomCarnet;
                          int pipe = contact.lastIndexOf("|");
                          contact =contact.substring(0,pipe);
                          contact = contact;
                          contactLigne = "|" + nomContact;
                          pipe = contactLigne.lastIndexOf("|");
                          contact = contactLigne.substring(0,pipe);
                          contactLigne = contact;
                     }

             } while (resultat > 0);

             myString += line + "\n";
             System.out.println(myString);
       }

       return myString;  
 }

如果有人能帮我编写代码,我将不胜感激,因为现在每个子字符串都不是按字母顺序排列的。
我想做的是 insertContactInString 方法正在使用 getContactName 将传入参数的行参数中包含的名称与中包含的名称进行比较 myString 使用相同的 getContactName 方法。
要比较两个字符串, myString 必须不为空并且至少包含一个条目。
在那之后,我用 compareToIgnoreCase 比较两个字符串并将结果存储在 resultat 变量。
这里我使用if语句来检查 resultat 小于零。如果是这样的话, nomContact 应该在前面插入 nomCarnet 如果 resultat 大于零, nomCarnet 应该先是后是 nomContact .
但是,我不能做的是连接 getContactName 排队的时候 myString .
例如,如果 resultat 小于零,我要插入 myString 包含 nomContact 在包含 nomCarnet 在某种程度上 myString 最后会是这样的:

String myString = 
    "3|nomContact|lastname|email|tel" + "\n" + 
    "2|nomCarnet|lastname|email|tel" + "\n" + 
    "1|name|lastname|email|tel" + "\n" + 
    "4|name|lastname|email|tel" + "\n";

名称=英文名称

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题