質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

208閲覧

多次元配列を使って作ったチャートを元に計算するプログラムが完成できず困っている

Momomo.

総合スコア22

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2017/11/14 07:08

編集2017/11/14 07:16

学校の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などです。主に自分が書いたコードに使われている文が使用可能なコードとなっています。

よろしく御願いいたします(>_<)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

先生が教えてくれないって言うことを信じて
(配列のデータが表とは違うのでサンプルで間違ってたCCのところだけは直した)

参考程度にどうぞ

Java

1import java.util.Scanner; 2import java.util.ArrayList; 3public class ProteinScore { 4 public static void main(String[] args) { 5 Scanner sc = new Scanner(System.in); 6 7 String alp = "ARNDCQEGHILKMFPSTWYV*"; 8 String input = ""; 9 ArrayList<String> list = new ArrayList<String>(); 10 11 int[][] protein = { 12 { 4, -1, -2, -2, 0, -1, -1, 0, -2, -1, -1, -1, -1, -2, -1, 1, 0, -3, -2, 0, -4}, 13 { -1, 5, 0, -2, -3, 1, 0, -2, 0, -3, -2, 2, -1, -3, -2, -1, -1, -3, -2, -3, -4}, 14 { -2, 0, 6, 1, -3, 0, 0, 0, 1, -3, -3, 0, -2, -3, -2, 1, 0, -4, -2, -3, -4}, 15 { -2, -2, 1, 6, -3, 0, 2, -1, -1, -3, -4, -1, -3, -3, -1, 0, -1, -4, -3, -3, -4}, 16 { 0, -3, -3, 6, 9, 0, 2, -1, -1, -3, -4, -1, -3, -3, -1, 0, -1, -4, -3, -3, -4}, 17 { -1, 1, 0, 0, -3, 5, 2, -2, 0, -3, -2, 1, 0, -3, -1, 0, -1, -2, -1, -2, -4}, 18 { -1, 0, 0, 2, -4, 2, 5, -2, 0, -3, -3, 1, -2, -3, -1, 0, -1, -3, -2, -2, -4}, 19 { 0, -2, 0, -1, -3, -2, -2, 6, -2, -4, -4, -2, -3, -3, -2, 0, -2, -2, -3, -3, -4}, 20 { -2, 0, 1, -1, -3, 0, 0, -2, 8, -3, -3, -1, -2, -1, -2, -1, -2, -2, 2, -3, -4}, 21 { -1, -3, -3, -3, -1, -3, -3, -4, -3, 4, 2, -3, 1, 0, -3, -2, -1, -3, -1, 3, -4}, 22 { -1, -2, -3, -4, -1, -2, -3, -4, -3, 2, 4, -2, 2, 0, -3, -2, -1, -2, -1, 1, -4}, 23 { -1, 2, 0, -1, -3, 1, 1, -2, -1, -3, -2, 5, -1, -3, -1, 0, -1, -3, -2, -2, -4}, 24 { -1, -1, -2, -3, -1, 0, -2, -3, -2, 1, 2, -1, 5, 0, -2, -1, -1, -1, -1, 1, -4}, 25 { -2, -3, -3, -3, -2, -3, -3, -3, -1, 0, 0, -3, 0, 6, -4, -2, -2, 1, 3, -1, -4}, 26 { -1, -2, -2, -1, -3, -1, -1, -2, -2, -3, -3, -1, -2, -4, 7, -1, -1, -4, -3, -2, -4}, 27 { 1, -1, 1, 0, -1, 0, 0, 0, -1, -2, -2, 0, -1, -2, -1, 4, 1, -3, -2, -2, -4}, 28 { 0, -1, 0, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, -2, -1, 1, 5, -2, -2, 0, -4}, 29 { -3, -3, -4, -4, -2, -2, -3, -2, -2, -3, -2, -3, -1, 1, -4, -3, -2, 11, 2, -3, -4}, 30 { -2, -2, -2, -3, -2, -1, -2, -3, 2, -1, -1, -2, -1, 3, -3, -2, -2, 2, 7, -1, -4}, 31 { 0, -3, -3, -3, -1, -2, -2, -3, -3, 3, 1, -2, 1, -1, -2, -2, 0, -3, -1, 4, -4}, 32 { -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 1}, 33 }; 34 35 System.out.println("This program will score protein sequences."); 36 do { 37 System.out.print("Please enter a protein sequence. \nIf you finish entering, please type -1.\n>"); 38 // 入力データ取得 39 input = sc.nextLine(); 40 41 // -1なら抜ける 42 if(input.equals("-1") != false) { 43 break; 44 } 45 46 // 入力データをリストに追加していく(大文字化もする) 47 list.add(input.toUpperCase()); 48 49 } while(true); 50 51 // 2個以上のときはわからん 52 if(list.size() != 2) { 53 return; 54 } 55 56 // リストから1行目のデータと2行目のデータを取る 57 String _oneStr = list.get(0); 58 String _twoStr = list.get(1); 59 60 // 2行目のは1行目と文字数が小さいか同じしかありえない(仕様がわからん) 61 if(_oneStr.length() > _twoStr.length()) { 62 _twoStr = "*" + _twoStr; 63 while(_oneStr.length() > _twoStr.length()) { 64 _twoStr += "*"; 65 } 66 } 67 68 // 文字数は一致してるので後は出すだけ 69 System.out.println(_oneStr); 70 System.out.println(_twoStr); 71 int _sum = 0; 72 String _chartStr = ""; 73 for(int i = 0; i < _oneStr.length(); i++) { 74 int _wk = protein[alp.indexOf(_oneStr.charAt(i))][alp.indexOf(_twoStr.charAt(i))]; 75 _sum += _wk; 76 _chartStr = _chartStr + _wk + " "; 77 } 78 System.out.println(_chartStr + _sum); 79 } 80}

投稿2017/11/14 17:28

rururu3

総合スコア5545

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Momomo.

2017/11/15 06:40

先生が課題に関して質問に答えてくれないということは本当です。信じてくださりありがとうございます。 また、コードを教えてくださり感謝いたします。 インプットを空のStringに設定するところなど、自分が思いつかなかったことなので大変参考になりました。 教えていただいたコードを参考に間違えていたところを直し、知らなかったところは学ぼうと思います。 本当にありがとうございました。助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問