Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使用选择排序按字母顺序对名称数组列表进行排序_Java_Sorting_Arraylist_Selection Sort - Fatal编程技术网

Java 无法使用选择排序按字母顺序对名称数组列表进行排序

Java 无法使用选择排序按字母顺序对名称数组列表进行排序,java,sorting,arraylist,selection-sort,Java,Sorting,Arraylist,Selection Sort,我正在尝试使用选择排序对名称的ArrayList进行排序,使用我的两种方法minimumPosition()和maxiumposition()按字母顺序对名称进行递增和递减排序。比较字符串时遇到问题,因为它指出。CompareTignoreCase需要数组,但找到了数组列表。我不确定是否有其他方法可以比较ArrayList以按字母顺序打印我的姓名 我尝试过将返回方法类型从int切换到String,但是没有用,我还尝试过将一些变量类型从int切换到String,只是想看看是否有任何东西可以工作,但

我正在尝试使用选择排序对名称的
ArrayList
进行排序,使用我的两种方法
minimumPosition()
maxiumposition()
按字母顺序对名称进行递增和递减排序。比较
字符串
时遇到问题,因为它指出
。CompareTignoreCase
需要数组,但找到了
数组列表
。我不确定是否有其他方法可以比较
ArrayList
以按字母顺序打印我的姓名

我尝试过将返回方法类型从
int
切换到
String
,但是没有用,我还尝试过将一些变量类型从
int
切换到
String
,只是想看看是否有任何东西可以工作,但没有。我已经在网络上搜索过这个问题的解决方案,但我只找到了如何对整数和数组使用选择排序,而不是数组列表。我的代码中整数的
ArrayList
用于处理线性和二进制搜索的赋值的第二部分,所以忽略它。我主要关注名称的
ArrayList
。任何帮助都将不胜感激,下面是我的代码示例

    package classwork_additional1;
    import java.util.ArrayList;
    import java.util.Collections;

    public class Classwork_Additional1 {

    public static void main(String[] args){

       ArrayList<String> array = new ArrayList<>();
       array.add("Mary");
       array.add("Mike");
       array.add("Michael");
       array.add("Ann");
       array.add("Tom");
       array.add("Tommy");
       array.add("Bob");

       ArrayList<Integer> integers = new ArrayList<>();
       integers.add(10);
       integers.add(10);
       integers.add(5);
       integers.add(8);
       integers.add(10);
       integers.add(7);
       integers.add(10);


   }
    public static void sort(ArrayList<String> array)
   {  
      for (int i = 0; i < array.size() - 1; i++)
      {  
         int minPos = minimumPosition(array, i);
         swap(array, minPos, i);
      }
   }
    public static void swap(ArrayList<String> array, int i, int j)
   {
      String temp = array.get(i);
      array.set(i, array.get(j));
      array.set(j, temp);
   }
    private static int minimumPosition(ArrayList<String> array, int from){

      int minPos = from;
      for (int i = from + 1; i < array.size(); i++)
      {
         if (array.get(i).compareToIgnoreCase(array[minPos]) < 0) 
    minPos = i; 
      }
      return minPos;

    }

    private static int maximumPosition(ArrayList<String> array, int from)
   {  
      int maxPos = from;
      for (int i = from + 1; i < array.size(); i++)
      {
         if (array.get(i).compareToIgnoreCase(array[maxPos]) > 0) 
    maxPos = i; 
      }
      return maxPos;
   }
package classwork\u additional1;
导入java.util.ArrayList;
导入java.util.Collections;
公共课堂作业\u附加1{
公共静态void main(字符串[]args){
ArrayList数组=新的ArrayList();
数组。添加(“玛丽”);
数组。添加(“Mike”);
数组。添加(“迈克尔”);
数组。添加(“Ann”);
数组。添加(“Tom”);
数组。添加(“Tommy”);
数组。添加(“Bob”);
ArrayList整数=新的ArrayList();
整数。加(10);
整数。加(10);
整数。加(5);
整数。加(8);
整数。加(10);
整数。加(7);
整数。加(10);
}
公共静态无效排序(ArrayList数组)
{  
对于(int i=0;i0)
maxPos=i;
}
返回maxPos;
}
我希望这些名字能按字母顺序出现,从“安”开始,到“汤米”,再到“汤米”,再到“安”。

只要换个名字就行了

if(array.get(i).compareToIgnoreCase(array[minPos]) < 0)
if(array.get(i).compareToIgnoreCase(array[minPos])<0)

if(array.get(i).compareTignoreCase(array.get(minPos))<0)

如果您试图在一个特定索引处获取元素两次,为什么要使用不同的方法来尝试呢?

您甚至没有从
main
调用
sort
,我还无法让我的方法工作以测试它,如果
语句告诉我它需要
数组,我会在
上出错>而不是
ArrayList
不,这不是它说的。它说的是你不能使用
array[minPos]
,因为
array
不是数组,你只能使用
[]
访问数组元素,而不是ArrayList的元素。当询问错误时,始终发布准确完整的错误消息,而不是对其进行解释。
if(array.get(i).compareToIgnoreCase(array.get(minPos)) < 0)