static int[] getNumbers(String[] args) throws NumberFormatException { // if(args==null) // {return null;} int[] a = new int[args.length];
for (int i = 0; i < args.length; i++) a[i] = Integer.parseInt(args[i]);
return a; }
static void printNumbers(int[] a) { for (int i = 0; i < a.length; i++) System.out.print(a[i] + " "); System.out.println(); }
static void sort(int[] a) { msort(a, 0, a.length-1); }
static void msort(int[] a, int lo, int hi) { if (lo == hi) return; else { int mid = (lo + hi) / 2; msort(a, lo, mid); msort(a, mid+1, hi); merge(a, lo, mid, hi); } }
static void merge(int[] a, int lo, int mid, int hi) { int[] b = new int[hi-lo+1]; int i = lo, j = mid+1, k = 0; while ((i < mid+1) && (j < hi+1)) { if (a[i] < a[j]) b[k++] = a[i++]; else b[k++] = a[j++]; } if (i == mid+1) System.arraycopy(a, j, b, k, hi-j+1); else System.arraycopy(a, i, b, k, mid-i+1); System.arraycopy(b, 0, a, lo, b.length); } }
if(args=null)//////////////////////
{return;}
int[] a = new int[args.length];
for (int i = 0; i < args.length; i++)
a[i] = Integer.parseInt(args[i]);
return a;
}
//编译出错
E:\j2sdk1.4.1_02\save\OOPG\MergeSortIntegerArgs.java:24: incompatible types
found : java.lang.String[]
required: boolean
if(args=null)
^
E:\j2sdk1.4.1_02\save\OOPG\MergeSortIntegerArgs.java:25: missing return value
{return;}
^
2 errorsProcess completed.
当然
if( args == null ){
return;
}--------------------Configuration: j2sdk1.4.1_02 <Default>--------------------
E:\j2sdk1.4.1_02\save\OOPG\MergeSortIntegerArgs.java:25: missing return value
{return;}
^
1 errorProcess completed.
java MergeSortIntegerArgs 4 23 4 25 34 5 3245 345
//可排序
//但java MergeSortIntegerArgs
//出现太多异常!如何避免。
public class MergeSortIntegerArgs { public static void main(String[] args) {
// try {
// if(args==null)
// {System.exit(0);
// return ;}
int[] a = getNumbers(args);
sort(a);
printNumbers(a);
} catch (NumberFormatException e) {
String msg = "Error: argument " + e.getMessage();
msg += " is badly formed.";
System.out.println(msg);
System.exit(0);
}
}
static int[] getNumbers(String[] args) throws NumberFormatException {
// if(args==null)
// {return null;}
int[] a = new int[args.length];
for (int i = 0; i < args.length; i++)
a[i] = Integer.parseInt(args[i]);
return a;
}
static void printNumbers(int[] a) {
for (int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
System.out.println();
}
static void sort(int[] a) {
msort(a, 0, a.length-1);
}
static void msort(int[] a, int lo, int hi) {
if (lo == hi) return;
else {
int mid = (lo + hi) / 2;
msort(a, lo, mid);
msort(a, mid+1, hi);
merge(a, lo, mid, hi);
}
}
static void merge(int[] a, int lo, int mid, int hi) {
int[] b = new int[hi-lo+1];
int i = lo, j = mid+1, k = 0;
while ((i < mid+1) && (j < hi+1)) {
if (a[i] < a[j])
b[k++] = a[i++];
else
b[k++] = a[j++];
}
if (i == mid+1)
System.arraycopy(a, j, b, k, hi-j+1);
else
System.arraycopy(a, i, b, k, mid-i+1);
System.arraycopy(b, 0, a, lo, b.length);
}
}