Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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_Class_Sorting_Methods - Fatal编程技术网

Java排序程序混乱

Java排序程序混乱,java,class,sorting,methods,Java,Class,Sorting,Methods,我正在为我的java课程做一个作业。我们必须创建一个程序,要求用户输入几个整数,然后他们选择使用哪种类型的排序方法(即选择、冒泡和插入) 方向说明我们应该有一个driver类和一个名为Sorter的类。类分拣机将具有不同分拣选项的方法 我的问题是,我从插入排序开始,开始做这一切,并认为最简单的部分是将它分为不同的类,但我很难做到这一点。我想我应该使用一个“菜单”开关,在下面的方法中为不同的排序算法添加不同的方法。但我不知道如何让它正常工作。任何帮助都将不胜感激 另外,我的插入排序看起来正常吗?我

我正在为我的java课程做一个作业。我们必须创建一个程序,要求用户输入几个整数,然后他们选择使用哪种类型的排序方法(即选择、冒泡和插入)

方向说明我们应该有一个driver类和一个名为Sorter的类。类分拣机将具有不同分拣选项的方法

我的问题是,我从插入排序开始,开始做这一切,并认为最简单的部分是将它分为不同的类,但我很难做到这一点。我想我应该使用一个“菜单”开关,在下面的方法中为不同的排序算法添加不同的方法。但我不知道如何让它正常工作。任何帮助都将不胜感激

另外,我的插入排序看起来正常吗?我认为使用数组列表比使用固定数组更好,事实证明这比我想象的更难

这是我的密码

驾驶员等级

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Iterator;

public class DriverSort {

public static void main(String[] args) {

    Scanner scan =new Scanner(System.in);
    /* System.out.println("1-Insertion sort\n"
                    +"2-Selection sort\n"
                    + "3-Bubble sort\n"
                    + "0-quit\n"
                    + "Please enter the number for a sorting method or enter 0 to quit: ");
    option = scan.nextInt(); */

     //Instantiate and call Insertion sort. 

    String list="";

    ArrayList<Integer> arrlist=new ArrayList<Integer>();
    System.out.println(" ");
    System.out.println(" ");
    System.out.println("Welcome to the sorting application menu, the following sorting" 
            + "methods are available: ");
    System.out.println("Please enter the list of elements: ");
    System.out.println(" write 'STOP' when list is completed ");


    while(!(list=scan.nextLine()).equalsIgnoreCase("stop")){
        int intelement = Integer.parseInt(list);
        arrlist.add(intelement);           
    }

    int elementlist[]  = new int[arrlist.size()];
    Iterator<Integer> iter = arrlist.iterator();
    for (int j=0;iter.hasNext();j++) {
        elementlist[j] = iter.next();
    }

    elementlist = Sorter.insertionSort(elementlist);
    System.out.println(" ");
    System.out.println(" ");
    System.out.println(" ");
    System.out.println("Values after Insertion Sort : ");
    for (int j=0;j<elementlist.length;j++) {
        System.out.print(elementlist[j]+" ");
    }
  }
}
import java.util.Scanner;
导入java.util.ArrayList;
导入java.util.Iterator;
公共类DriverSort{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
/*System.out.println(“1-插入排序\n”
+“2-选择排序\n”
+“3气泡排序\n”
+“0-退出\n”
+请输入排序方法的编号,或输入0退出:);
option=scan.nextInt()*/
//实例化并调用插入排序。
字符串列表=”;
ArrayList arrlist=新的ArrayList();
System.out.println(“”);
System.out.println(“”);
System.out.println(“欢迎使用排序应用程序菜单,下面的排序”
+“方法可用:”;
System.out.println(“请输入元素列表:”);
System.out.println(“完成列表时写入“停止”);
而(!(list=scan.nextLine()).equalsIgnoreCase(“停止”)){
int intelement=Integer.parseInt(列表);
arrlist.add(intelement);
}
int elementlist[]=新的int[arrlist.size()];
迭代器iter=arrlist.Iterator();
对于(int j=0;iter.hasNext();j++){
elementlist[j]=iter.next();
}
elementlist=分拣机。插入分拣(elementlist);
System.out.println(“”);
System.out.println(“”);
System.out.println(“”);
System.out.println(“插入排序后的值:”);
对于(int j=0;j 0&&list[j-1]>next){
列表[j]=列表[j-1];
j--;
}//结束时
//插入元素
列表[j]=下一个;
}//循环结束
退货清单;
}//末端插入端口
}//终端开关
} 
} 

描述不太清楚,但这是一种方法:

应该编写的是一个抽象类(或接口)排序器,它带有一个抽象方法“void sort(int[]list)`。然后编写三个扩展(或实现)Sorter的类,其中一个用于排序方法;这里方法sort实际上实现了算法

“驱动程序”执行对话,创建一个Sorter子类实例并调用sort

public abstract class Sorter {
     public abstract void sort( int[] list );
}

public class InsertionSorter extends Sorter {
    public void sort( int[] list ){
         // implement insertion sort
    }
}

public class Driver {
    public void sortUsing(){
         int iSort = ...;
         int[] list = ...; 
         Sorter sorter = null;
         switch( iSort ){
         case 1:
             sorter = new InsertionSorter();
             break;
         // cases 2, 3,...
         default:
             throw ...;
         }
         sorter.sort( list );
    }        
}

描述不太清楚,但这是一种方法:

应该编写的是一个抽象类(或接口)排序器,它带有一个抽象方法“void sort(int[]list)`。然后编写三个扩展(或实现)Sorter的类,其中一个用于排序方法;这里方法sort实际上实现了算法

“驱动程序”执行对话,创建一个Sorter子类实例并调用sort

public abstract class Sorter {
     public abstract void sort( int[] list );
}

public class InsertionSorter extends Sorter {
    public void sort( int[] list ){
         // implement insertion sort
    }
}

public class Driver {
    public void sortUsing(){
         int iSort = ...;
         int[] list = ...; 
         Sorter sorter = null;
         switch( iSort ){
         case 1:
             sorter = new InsertionSorter();
             break;
         // cases 2, 3,...
         default:
             throw ...;
         }
         sorter.sort( list );
    }        
}

描述不太清楚,但这是一种方法:

应该编写的是一个抽象类(或接口)排序器,它带有一个抽象方法“void sort(int[]list)`。然后编写三个扩展(或实现)Sorter的类,其中一个用于排序方法;这里方法sort实际上实现了算法

“驱动程序”执行对话,创建一个Sorter子类实例并调用sort

public abstract class Sorter {
     public abstract void sort( int[] list );
}

public class InsertionSorter extends Sorter {
    public void sort( int[] list ){
         // implement insertion sort
    }
}

public class Driver {
    public void sortUsing(){
         int iSort = ...;
         int[] list = ...; 
         Sorter sorter = null;
         switch( iSort ){
         case 1:
             sorter = new InsertionSorter();
             break;
         // cases 2, 3,...
         default:
             throw ...;
         }
         sorter.sort( list );
    }        
}

描述不太清楚,但这是一种方法:

应该编写的是一个抽象类(或接口)排序器,它带有一个抽象方法“void sort(int[]list)`。然后编写三个扩展(或实现)Sorter的类,其中一个用于排序方法;这里方法sort实际上实现了算法

“驱动程序”执行对话,创建一个Sorter子类实例并调用sort

public abstract class Sorter {
     public abstract void sort( int[] list );
}

public class InsertionSorter extends Sorter {
    public void sort( int[] list ){
         // implement insertion sort
    }
}

public class Driver {
    public void sortUsing(){
         int iSort = ...;
         int[] list = ...; 
         Sorter sorter = null;
         switch( iSort ){
         case 1:
             sorter = new InsertionSorter();
             break;
         // cases 2, 3,...
         default:
             throw ...;
         }
         sorter.sort( list );
    }        
}

嗯,我认为你对设计比对代码更困惑。无论如何,你可以很容易地找到答案,所以我会尽力帮你设计

public class DriverSort {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        private static Sorter sorter = new Sorter();

        // blah blah blah
        // take the input in an array or alist

        int choice;  // variable which says which sorting algorithm to use
        int[] arr;   // list of inputs to be sorted

        switch (choice) 
        {
            case 0: sorter.InsertionSort(are);
                    sorter.print(arr);
                    break;

            case 1: sorter.QuickSort(arr);
                    sorter.print(arr);
                    break;

            // and so on…

            default:
                    break;
        }
        }
    }
}
使
驱动程序
类独立于任何排序和打印逻辑。在
分拣机
类中处理该段代码

public class Sorter {

    public int[] InsertionSort(int[] arr)
    {
        // implement specific sorting logic
        return arr;
    }

    public int[] SelectionSort(int[] arr)
    {
        // implement specific sorting logic
        return arr;
    }

    public int[] QuickSort(int[] arr)
    {
        // implement specific sorting logic
        return arr;
    }

    public int[] ShellSort(int[] arr)
    {
        // implement specific sorting logic
        return arr;
    }

    public void print(int[] arr)
    { 
    }
} 

嗯,我认为你对设计比对代码更困惑。无论如何,你可以很容易地找到答案,所以我会尽力帮你设计

public class DriverSort {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        private static Sorter sorter = new Sorter();

        // blah blah blah
        // take the input in an array or alist

        int choice;  // variable which says which sorting algorithm to use
        int[] arr;   // list of inputs to be sorted

        switch (choice) 
        {
            case 0: sorter.InsertionSort(are);
                    sorter.print(arr);
                    break;

            case 1: sorter.QuickSort(arr);
                    sorter.print(arr);
                    break;

            // and so on…

            default:
                    break;
        }
        }
    }
}
使
驱动程序
类独立于任何排序和打印逻辑。在
分拣机
类中处理该段代码

public class Sorter {

    public int[] InsertionSort(int[] arr)
    {
        // implement specific sorting logic
        return arr;
    }

    public int[] SelectionSort(int[] arr)
    {
        // implement specific sorting logic
        return arr;
    }

    public int[] QuickSort(int[] arr)
    {
        // implement specific sorting logic
        return arr;
    }

    public int[] ShellSort(int[] arr)
    {
        // implement specific sorting logic
        return arr;
    }

    public void print(int[] arr)
    { 
    }
} 

嗯,我认为你对设计比对代码更困惑。无论如何,你可以很容易地找到答案,所以我会尽力帮你设计

public class DriverSort {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        private static Sorter sorter = new Sorter();

        // blah blah blah
        // take the input in an array or alist

        int choice;  // variable which says which sorting algorithm to use
        int[] arr;   // list of inputs to be sorted

        switch (choice) 
        {
            case 0: sorter.InsertionSort(are);
                    sorter.print(arr);
                    break;

            case 1: sorter.QuickSort(arr);
                    sorter.print(arr);
                    break;

            // and so on…

            default:
                    break;
        }
        }
    }
}
使
驱动程序
类独立于任何排序和打印逻辑。在
分拣机
类中处理该段代码

public class Sorter {

    public int[] InsertionSort(int[] arr)
    {
        // implement specific sorting logic
        return arr;
    }

    public int[] SelectionSort(int[] arr)
    {
        // implement specific sorting logic
        return arr;
    }

    public int[] QuickSort(int[] arr)
    {
        // implement specific sorting logic
        return arr;
    }

    public int[] ShellSort(int[] arr)
    {
        // implement specific sorting logic
        return arr;
    }

    public void print(int[] arr)
    { 
    }
} 

嗯,我认为你对设计比对代码更困惑。无论如何,你可以很容易地找到答案,所以我会尽力帮你设计

public class DriverSort {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        private static Sorter sorter = new Sorter();

        // blah blah blah
        // take the input in an array or alist

        int choice;  // variable which says which sorting algorithm to use
        int[] arr;   // list of inputs to be sorted

        switch (choice) 
        {
            case 0: sorter.InsertionSort(are);
                    sorter.print(arr);
                    break;

            case 1: sorter.QuickSort(arr);
                    sorter.print(arr);
                    break;

            // and so on…

            default:
                    break;
        }
        }
    }
}
使
驱动程序
类独立于任何排序和打印逻辑。在
分拣机
类中处理该段代码

public class Sorter {

    public int[] InsertionSort(int[] arr)
    {
        // implement specific sorting logic
        return arr;
    }

    public int[] SelectionSort(int[] arr)
    {
        // implement specific sorting logic
        return arr;
    }

    public int[] QuickSort(int[] arr)
    {
        // implement specific sorting logic
        return arr;
    }

    public int[] ShellSort(int[] arr)
    {
        // implement specific sorting logic
        return arr;
    }

    public void print(int[] arr)
    { 
    }
} 

你不能在一个开关中定义一个方法。是的,我应该澄清一下……这是未完成的代码。我不是