新手,JAVA才学了两天,这个程序怎么看都看不懂哪里出错了,能否帮忙指正一下?
不胜感激!
import java.until.random;
class SequenceAlignment1{
/*
using main with two command line arguments will align the
arguments with minimum cost according to the meassure +1 for
mismatches and indels, 0 for matches.
*/
private string[] character=[ A ,R, N, D, C, Q, E, G, H, I, L, K, M, F, P, S, T, W, Y,V];
private int[][] scores =
/* A R N D C Q E G H I L K M F P S T W Y V */
{ /* A */ { 5 },
/* R */ { -2, 7 },
/* N */ { -1,-1, 7 },
/* D */ { -2,-2, 2, 8 },
/* C */ { -1,-4,-2,-4,13 },
/* Q */ { -1, 1, 0, 0,-3, 7 },
/* E */ { -1, 0, 0, 2,-3, 2, 6 },
/* G */ { 0,-3, 0,-1,-3,-2,-3, 8 },
/* H */ { -2, 0, 1,-1,-3, 1, 0,-2,10 },
/* I */ { -1,-4,-3,-4,-2,-3,-4,-4,-4, 5 },
/* L */ { -2,-3,-4,-4,-2,-2,-3,-4,-3, 2, 5 },
/* K */ { -1, 3, 0,-1,-3, 2, 1,-2, 0,-3,-3, 6 },
/* M */ { -1,-2,-2,-4,-2, 0,-2,-3,-1, 2, 3,-2, 7 },
/* F */ { -3,-3,-4,-5,-2,-4,-3,-4,-1, 0, 1,-4, 0, 8 },
/* P */ { -1,-3,-2,-1,-4,-1,-1,-2,-2,-3,-4,-1,-3,-4,10 },
/* S */ { 1,-1, 1, 0,-1, 0,-1, 0,-1,-3,-3, 0,-2,-3,-1, 5 },
/* T */ { 0,-1, 0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1, 2, 5 },
/* W */ { -3,-3,-4,-5,-5,-1,-3,-3,-3,-3,-2,-3,-1, 1,-4,-4,-3,15 },
/* Y */ { -2,-1,-2,-3,-3,-1,-2,-3, 2,-1,-1,-2, 0, 4,-3,-2,-2, 2, 8 },
/* V */ { 0,-3,-3,-4,-1,-3,-3,-4,-4, 4, 1,-3, 1,-1,-3,-2, 0,-3,-1, 5 }
/* A R N D C Q E G H I L K M F P S T W Y V */
};
int convert(string x)
{ /* A R N D C Q E G H I L K M F P S T W Y V */
int index;
switch(x){
case A: index=0;break;
case R: index=1;break;
case N: index=2;break;
case D: index=3;break;
case C: index=4;break;
case Q: index=5;break;
case E: index=6;break;
case G: index=7;break;
case H: index=8;break;
case I: index=9;break;
case L: index=10;break;
case K: index=11;break;
case M: index=12;break;
case F: index=13;break;
case P: index=14;break;
case S: index=15;break;
case T: index=16;break;
case W: index=17;break;
case Y: index=18;break;
case V: index=19;break;
default:break;
}
return a;
}
int getscore(string a,string b){
int i,j;
i=convert(a);
j=convert(b);
if(score)
score=scores[i][j];
else
score=scores[j][i];
}
public static void main(String[] args){
/*SequenceAlignment1 sa1 = new SequenceAlignment1(string[] cmdLn);
String[] res = sa1.getAlignment();
System.out.println(sa1.getValue());
System.out.println(res[0]);
System.out.println(res[1]);*/
Random generator=new Random();
//int r=generator.nextInt();
for(int j=0;j<cmdLn.length;j++){
int randomIndex=generator.nextInt(19);
string b;
b=character[randomIndex];
}
String xs, ys; // the seqs to be aligned.
int n, m; // their lengths.
int[][] M; // the matrix used to compute the optimal values
Coord[][] traceback;
public SequenceAlignment1(String a, String b){
xs = a;
ys = b;
n = a.length();
m = b.length();
M = new int[n+1][m+1];
traceback = new Coord[n+1][m+1];
for(int i = 1; i<=n; i++){
M[i][0] = i*(-8);
traceback[i][0]=new Coord(i-1,0);
}
for(int j = 1; j<=m; j++){
M[0][j] = j*(-8);
traceback[0][j]=new Coord(0,j-1);
}
for(int i = 1; i<=n; i++)
for(int j = 1; j<=m; j++){
M[i][j] = max(M[i-1][j-1]+d(xs.charAt(i-1),ys.charAt(j-1)),
M[i-1][j]-8,
M[i][j-1]-8);
if(M[i][j] == M[i-1][j-1]+d(xs.charAt(i-1),ys.charAt(j-1)))
traceback[i][j] = new Coord(i-1,j-1);
else if (M[i][j]==M[i-1][j]-8)
traceback[i][j] = new Coord(i-1,j);
else traceback[i][j] = new Coord(i,j-1);
}
}
public int getValue(){return M[n][m];}
public String[] getAlignment(){
Coord tb = new Coord(n,m);
StringBuffer res1 = new StringBuffer();
StringBuffer res2 = new StringBuffer();
int i = tb.i;
int j = tb.j;
tb=traceback[n][m];
while(tb!=null){
if(i==tb.i)res1.append('-');
else res1.append(xs.charAt(i-1));
if(j==tb.j)res2.append('-');
else res2.append(ys.charAt(j-1));
i=tb.i;
j=tb.j;
tb = traceback[i][j];
}
String[] res = {res1.reverse().toString(),res2.reverse().toString()};
return res;
}
private static final int min(int a, int b, int c){
return Math.min(a,Math.min(b,c));
}
private static final int max(int a, int b, int c){
return Math.max(a,Math.max(b,c));
}
// The distance function:
private static final int d(char a, char b){
return a==b?0:1;
}
}
class Coord{
int i, j;
Coord(int x, int y){
i=x;j=y;
}
}