学校のJAVAのクラスの課題のプログラムを作っているのですがうまくいきません。
多次元配列を使ったプログラムを書いています。
私のプログラムを直していただけませんか?
<課題>
このチャートを元にユーザーにアルファベットを入力してもらいます。ユーザーが−1を入力するまでインプットをしてもらい続けます。
サンプルがこれです。ユーザーがもしACKRFYYAとCRRFYを入力したとします。すると、二つ目のストリングのほうが1つ目よりも短いのでそれを補うために2つ目のストリングの初めに*を表示させます。もしも2文字以上短い場合は1つ目以降の*はストリングの語尾に足します。
そしてチャートと二つのストリングを元になんの数字になるのか表示させます。そして最後に全ての数字を足した答えもプリントします。
<自分の書いたコード>
java
1import java.util.Scanner; 2public class ProteinScore { 3 public static void main(String[] args){ 4 5 Scanner sc = new Scanner(System.in); 6 7 String alp = "ARNDCQEGHILKMFPSTWYV*"; 8 String input; 9 10 int[][] protein = { 11 {4,-1,-2,-2,0,-1,-1,0,-2,-1,-1,-1,-1,-2,-1,1,0,-3,-2,0,-4}, 12 {-1,5,0,-2,-3,1,0,-2,0,-3,-2,2,-1,-3,-2,-1,-1,-3,-2,-3,-4}, 13 {-2,0,6,1,-3,0,0,0,1,-3,-3,0,-2,-3,-2,1,0,-4,-2,-3,-4}, 14 {-2,-2,1,6,-3,0,2,-1,-1,-3,-4,-1,-3,-3,-1,0,-1,-4,-3,-3,-4}, 15 {0,-3,-3,6,-3,0,2,-1,-1,-3,-4,-1,-3,-3,-1,0,-1,-4,-3,-3,-4}, 16 {-1,1,0,0,-3,5,2,-2,0,-3,-2,1,0,-3,-1,0,-1,-2,-1,-2,-4}, 17 {-1,0,0,2,-4,2,5,-2,0,-3,-3,1,-2,-3,-1,0,-1,-3,-2,-2,-4}, 18 {0,-2,0,-1,-3,-2,-2,6,-2,-4,-4,-2,-3,-3,-2,0,-2,-2,-3,-3,-4}, 19 {-2,0,1,-1,-3,0,0,-2,8,-3,-3,-1,-2,-1,-2,-1,-2,-2,2,-3,-4}, 20 {-1,-3,-3,-3,-1,-3,-3,-4,-3,4,2,-3,1,0,-3,-2,-1,-3,-1,3,-4}, 21 {-1,-2,-3,-4,-1,-2,-3,-4,-3,2,4,-2,2,0,-3,-2,-1,-2,-1,1,-4}, 22 {-1,2,0,-1,-3,1,1,-2,-1,-3,-2,5,-1,-3,-1,0,-1,-3,-2,-2,-4}, 23 {-1,-1,-2,-3,-1,0,-2,-3,-2,1,2,-1,5,0,-2,-1,-1,-1,-1,1,-4}, 24 {-2,-3,-3,-3,-2,-3,-3,-3,-1,0,0,-3,0,6,-4,-2,-2,1,3,-1,-4}, 25 {-1,-2,-2,-1,-3,-1,-1,-2,-2,-3,-3,-1,-2,-4,7,-1,-1,-4,-3,-2,-4}, 26 {1,-1,1,0,-1,0,0,0,-1,-2,-2,0,-1,-2,-1,4,1,-3,-2,-2,-4}, 27 {0,-1,0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1,1,5,-2,-2,0,-4}, 28 {-3,-3,-4,-4,-2,-2,-3,-2,-2,-3,-2,-3,-1,1,-4,-3,-2,11,2,-3,-4}, 29 {-2,-2,-2,-3,-2,-1,-2,-3,2,-1,-1,-2,-1,3,-3,-2,-2,2,7,-1,-4}, 30 {0,-3,-3,-3,-1,-2,-2,-3,-3,3,1,-2,1,-1,-2,-2,0,-3,-1,4,-4}, 31 {-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,1}, 32 }; 33 34 System.out.println("This program will score protein sequences."); 35 System.out.print("Please enter a protein sequence. \nIf you finish entering, please type -1.\n>"); 36 input = sc.nextLine(); 37 input.toUpperCase(); 38 39 System.out.println(input); 40 41 42 while(!input.equals("-1")){ 43 System.out.print("Please enter a protein sequence. \nIf you finish entering, please type -1.\n>"); 44 input = sc.nextLine(); 45 input.toUpperCase(); 46 47 for(int i=0;i<alp.length();i++){ 48 for(int j=0;j<alp.length();j++){ 49 if(input.charAt(i)==alp.charAt(j)) 50 System.out.print(input.charAt(i)); 51 else if(input.equals("-1")) 52 return; 53 54 } 55 } 56 System.out.println(); 57 } 58 59 validate(input,alp); 60 searchIndex(alp,input,protein); 61 } 62 63 public static boolean validate(String input,String alp){ 64 65 boolean flag = true; 66 int j=0; 67 68 if(input.equals("-1")) 69 flag = false; 70 71 while(flag==true){ 72 for(int i=0;i<alp.length();i++){ 73 if(input.charAt(j)==alp.charAt(i)){ 74 75 } 76 else{ 77 System.out.println("Invalid input."); 78 } 79 } 80 j++; 81 } 82 return flag; 83 84 if(flag==true){ 85 printInput(input,flag); 86 } 87 } 88 89 public static int searchIndex(String alp,String input,int[][] protein){ 90 91 int indOfInput; 92 int count=0; 93 while(count<input.length()){ 94 for(int i=0;i<alp.length();i++){ 95 if(input.charAt(0)==alp.charAt(i)) 96 indOfInput=i; 97 } 98 count++; 99 } 100 101 calculate(indOfInput,protein); 102 } 103 104 public static void printInput(String input,boolean flag){ 105 106 if(flag==true){ 107 System.out.println(input.toUpperCase()); 108 } 109 } 110 111 public static int calculate(int indOfInput,int[][] protein){ 112 113 } 114 115 116 } 117 118
<問題>
全くのプログラミング初心者なのですが、先生は課題に関する質問には一切答えてくださりませんし、習ったことしか使ってはいけないという規則を設けられているためGoogleで検索しても助けになるページが見つからず、教科書も助けにならず困っています。
すでに1週間以上このプログラムに取り組んでいますがいまだに完成させられません。
どうか助けてもらえないですか?
今まで習ったことは
多次元配列、インデックス、ストリング、charAtなどです。主に自分が書いたコードに使われている文が使用可能なコードとなっています。
よろしく御願いいたします(>_<)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/15 06:40