package com.liuxt.sort;
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;
public class SortMain { public static void main(String[] args) { SortTemplate template = null; //初始化模版类 try { template = new SortTemplate(); } catch (Exception e) { e.printStackTrace(); System.exit(1); } int dataLength=0,maxElement=0; BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); //boolean isExit=false; while (true) { try { String arrayLength=getInputDataLength(br); dataLength = Integer.parseInt(arrayLength); if (dataLength < 0){ System.out.println("\n数组的长度必须大于0:"); continue; } break; } catch (NumberFormatException e) { System.out.println("\n重新输入排序数组的长度(只能输入数字):"); continue; } catch (IOException e) { e.printStackTrace(); System.exit(1); } } template.setDataLength(dataLength); while (true) { try { String max=getInputMax(br); maxElement = Integer.parseInt(max); if (dataLength < 0){ System.out.println("\n数字必须大于0:"); continue; } break; } catch (NumberFormatException e) { System.out.println("\n重新输入数组的元素的最大值(只能输入数字):"); continue; } catch (IOException e) { e.printStackTrace(); System.exit(1); } } template.setMaxElement(maxElement); int algorithm=0; while(true){ showUsage(); String selectNumber = null; try { selectNumber = br.readLine(); try{ algorithm = Integer.parseInt(selectNumber); }catch (NumberFormatException e) { //e.printStackTrace(); System.out.println("请选择正确的排序算法序号!"); continue; } if (algorithm == 0) System.exit(0); else if(algorithm!=9){ try { template.sortDataByName(SortUtil.getSortNameById(algorithm-1)); } catch (Exception e) { e.printStackTrace(); System.exit(1); } } else { try { template.sortDataByAll(); } catch (Exception e) { e.printStackTrace(); System.exit(1); } } } catch (IOException e) { e.printStackTrace(); System.exit(1); } }
} private static String getInputDataLength(BufferedReader br) throws IOException{ System.out.print("输入排序数组的长度:"); String arrayLength=null; arrayLength = br.readLine(); return arrayLength; } private static String getInputMax(BufferedReader br) throws IOException { System.out.print("输入数组中整数的最大值:"); //BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String max=null; max = br.readLine(); return max; }
private static void showUsage() { System.out.println("\n请选择排序算法:"); System.out.println(" 1 直接插入排序 "); System.out.println(" 2 选择法排序 "); System.out.println(" 3 冒泡法排序 "); System.out.println(" 4 快速法排序 "); System.out.println(" 5 希尔法排序 "); System.out.println(" 6 堆法排序 "); System.out.println(" 7 归并排序 "); System.out.println(" 9 执行所有排序 "); System.out.println(" 0 退出 "); }
}
