按字母顺序对名称的链接列表进行排序

肖恩

大家好,我想通过将前三个字母相乘来按字母顺序对链接列表进行排序。它的工作方式是第一个字母为26 ^ 2,第二个字母为26 ^ 1,第三个字母为26 ^ 0。当我运行程序时,它会给我相同的总和,例如名称“ lala”和“ francis”。如果有人可以帮助我看看代码有什么问题,将不胜感激!

LinkedListNode类:(包含getSum方法)

public class LinkedListNode 
{ 

    public String data; 
    public LinkedListNode next; 
   public long sum; 


    public LinkedListNode(String data)  
   { 
        this.data = data; 
        this.next = null; 
        this.sum = getSum(data); 
    }//end node 

   public long getSum(String line) 
    { 
        int i; 
        long sum = 0; 
        String s = null; 
      char a; 

           for(i=0; i < 3; i++) 
         { 
            int j = 2; 
            a = line.charAt(i);      
            sum += Character.getNumericValue(a) * Math.pow(26, j); 
            //Return the value of the number 4 to be the power of 3 (4*4*4): Math.pow(4,3); 
            j--; 
           }//end for  

        return sum; 
    }//end getSum 

    public long getSum() 
    { 
      return sum; 
    }//end getSum 

    public String getData()  
   { 
        return data; 
    }//end getData 
    public void setData(String data)  
   { 
        this.data = data; 
    }//end setData 
    public LinkedListNode getNext()  
   { 
        return next; 
    }//end node 
    public void setNext(LinkedListNode next)  
   { 
        this.next = next; 
    }//end setNext 

}//end class node

LinkedList类:(具有列表的其他方法)

public class LinkedList { 

    public LinkedListNode front; 

    public LinkedList() { 
        this.front = null; 
    } 

    public void insertBack(String data) 
   { 
        if(front == null){ 
            front = new LinkedListNode(data); 
        }else{ 
            LinkedListNode newNode = new LinkedListNode(data); 
            LinkedListNode current = front; 
            while(current.getNext() != null){ 
                current = current.getNext(); 
            } 
            current.setNext(newNode); 
        }        
    }//end insertBack 

   public void addAfter(LinkedListNode spot, String data) 
   { 
       LinkedListNode newNode; 

       newNode = new LinkedListNode(data); 

       newNode.next = spot.next; 
       spot.next = newNode; 
   }//end addAfter 

   public void addBefore(LinkedListNode spot, String data) 
   { 

   }//end addBefore    

   public void deleteAfter(LinkedListNode spot) 
   { 
       LinkedListNode nextNode; 

       nextNode = spot.next; 
       spot.next = nextNode.next; 
   }//end deleteAfter 


    public String showList() 
   { 
        int i = 0; 
        String retStr = "The nodes in the list are:\n"; 
        LinkedListNode current = front; 
        while(current != null){ 
            i++; 
            retStr += "Node " + i + " is: " + current.getData() + " and the sum is: " + current.getSum() + "\n"; 
            current = current.getNext(); 

        } 

        return retStr; 
    } 

   public LinkedListNode findTail() 
   { 
       LinkedListNode current = front; 
        while(current.getNext() != null) 
      { 
            current = current.getNext(); 
        } 
      return current; 
   }//end findTail 
}

fileIn类别:

import java.util.Scanner; 
import java.io.*; 

public class fileIn 
{ 
   LinkedListNode front; 
   LinkedList myList = new LinkedList(); 
   String fname; 

   public static void main(String[] args) 
    {    
       fileIn f = new fileIn(); 
   }//end main 


   public fileIn() 
   { 
      getFileName(); 
      readFileContents(); 
      System.out.print(myList.showList()); 
   }//end namesLinkedList 

   public void readFileContents() 
    { 
        boolean looping; 
        DataInputStream in; 
        String line; 
        int j, len; 
        char ch; 

        /* Read input from file and process. */
        try 
        { 
            in = new DataInputStream(new FileInputStream(fname)); 

            looping = true; 
            while(looping) 
             { 
                /* Get a line of input from the file. */
                if (null == (line = in.readLine()))  
                { 
                    looping = false; 
                    /* Close and free up system resource. */
                    in.close(); 
                }//end if 
                else 
                { 
                myList.insertBack(line); 
                    j = 0; 
                    len = line.length();   
                }//end else 
            } /* End while. */

        } /* End try. */

        catch(IOException e)  
        { 
            System.out.println("Error " + e); 
        } /* End catch. */
    }//end readFileContents 

     public void getFileName() 
     { 
        Scanner in = new Scanner(System.in); 

        System.out.println("Enter file name please."); 
        fname = in.nextLine(); 

     }//end getFileName 

}//end class namesLinkedList
约翰·库格曼
for (i = 0; i < 3; i++) { 
    int j = 2; 
    a = line.charAt(i);      
    sum += Character.getNumericValue(a) * Math.pow(26, j); 
    j--; 
}

由于指数始终为,因此您会得到相同的结果2这导致fra15×26 2 + 27×26 2 + 10×26 2 = 35,152)和lal21×26 2 + 10×26 2 + 21×26 2 = 35,152)具有相同的值。为什么是这样?

该变量j在循环内部而不是外部声明。最后的减量没有作用,因为它在2每次迭代的开始处重新开始。

您应该将声明移出循环:

int j = 2; 

for (i = 0; i < 3; i++) { 
    a = line.charAt(i);      
    sum += Character.getNumericValue(a) * Math.pow(26, j); 
    j--; 
}

或者,您可以替换j2 - i并完全摆脱多余的变量。

for (i = 0; i < 3; i++) { 
    a = line.charAt(i);      
    sum += Character.getNumericValue(a) * Math.pow(26, 2 - i); 
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C中按字母顺序对链接列表进行排序

来自分类Dev

将链接列表按字母顺序排序

来自分类Dev

按字母顺序排序链接列表

来自分类Dev

将链接列表按字母顺序排序

来自分类Dev

按字母顺序对多个列表进行排序

来自分类Dev

按链接名称对链接列表进行排序

来自分类Dev

按项目对列表进行排序,按字母顺序排序

来自分类Dev

如何按字母顺序对字母数字列表进行排序

来自分类Dev

如何在C中按字母顺序对链接列表进行排序

来自分类Dev

按出现顺序和字母顺序对列表进行排序

来自分类Dev

按这些数据帧的名称的字母顺序对数据帧列表进行排序

来自分类Dev

我想按公司名称的字母顺序对该列表进行排序

来自分类Dev

用户根据姓氏按字母顺序对输入的名称进行排序

来自分类Dev

按字母顺序对<Player> ArrayList名称进行排序

来自分类Dev

按字母顺序对名称进行排序,数组错误

来自分类Dev

按名称标签的字母顺序对 xml 文件进行排序

来自分类Dev

如何按字母顺序对模板中的对象列表进行排序?

来自分类Dev

按字符数和字母顺序对列表进行排序

来自分类Dev

无法按字母顺序对数组列表进行排序

来自分类Dev

如何按字母顺序对列表视图进行排序

来自分类Dev

按出现和字母顺序对列表进行排序

来自分类Dev

按字母顺序对数组列表进行排序

来自分类Dev

按字母顺序对列表对象值进行排序

来自分类Dev

按字母顺序对列表中的文本范围进行排序

来自分类Dev

如何按名称首字母按字母顺序对表格进行排序?

来自分类Dev

首先按字母顺序对列表进行排序,然后按数字对列表进行排序?

来自分类Dev

Python尝试对列表进行数字排序后按字母顺序对列表进行排序

来自分类Dev

按字母顺序对ListView的元素进行排序

来自分类Dev

Android按字母顺序对ListView进行排序

Related 相关文章

  1. 1

    在C中按字母顺序对链接列表进行排序

  2. 2

    将链接列表按字母顺序排序

  3. 3

    按字母顺序排序链接列表

  4. 4

    将链接列表按字母顺序排序

  5. 5

    按字母顺序对多个列表进行排序

  6. 6

    按链接名称对链接列表进行排序

  7. 7

    按项目对列表进行排序,按字母顺序排序

  8. 8

    如何按字母顺序对字母数字列表进行排序

  9. 9

    如何在C中按字母顺序对链接列表进行排序

  10. 10

    按出现顺序和字母顺序对列表进行排序

  11. 11

    按这些数据帧的名称的字母顺序对数据帧列表进行排序

  12. 12

    我想按公司名称的字母顺序对该列表进行排序

  13. 13

    用户根据姓氏按字母顺序对输入的名称进行排序

  14. 14

    按字母顺序对<Player> ArrayList名称进行排序

  15. 15

    按字母顺序对名称进行排序,数组错误

  16. 16

    按名称标签的字母顺序对 xml 文件进行排序

  17. 17

    如何按字母顺序对模板中的对象列表进行排序?

  18. 18

    按字符数和字母顺序对列表进行排序

  19. 19

    无法按字母顺序对数组列表进行排序

  20. 20

    如何按字母顺序对列表视图进行排序

  21. 21

    按出现和字母顺序对列表进行排序

  22. 22

    按字母顺序对数组列表进行排序

  23. 23

    按字母顺序对列表对象值进行排序

  24. 24

    按字母顺序对列表中的文本范围进行排序

  25. 25

    如何按名称首字母按字母顺序对表格进行排序?

  26. 26

    首先按字母顺序对列表进行排序,然后按数字对列表进行排序?

  27. 27

    Python尝试对列表进行数字排序后按字母顺序对列表进行排序

  28. 28

    按字母顺序对ListView的元素进行排序

  29. 29

    Android按字母顺序对ListView进行排序

热门标签

归档