2016-11-30 6 views
0

私のコードは、ユーザー定義の文字列を入力し、それをDNA、RNA、またはODDとして分類します。出力はHashMap nucleotide_hmapのキーと値を出力するはずですが、コードは現在ありません。それが動作するように私のコードで何を変更すべきですか?ここ Javaコードが印刷されないHashMapのキーと値

が何であるかをコードすべき出力:

  • ATGC
  • 1(ユーザ入力シーケンスATGC場合):0.25
  • T 1:0.25
  • C 1:0.25
  • G 1:0.25
  • 配列長:4
  • 逆配列:C GTA
  • 逆相補:GCAT

そして、これが私のサブクラスのいずれかです。

package sequenceclasses; 

public class DNASequence extends MainSequence { 
    public DNASequence(String dna_sequence){ 
     the_sequence = dna_sequence; 
     complement_hmap.put('A', 'T'); 
     complement_hmap.put('T', 'A'); 
     complement_hmap.put('C', 'G'); 
     complement_hmap.put('G', 'C'); 
    } 
    public void nuc_content(String dna_sequence){ 
     the_sequence = dna_sequence; 
     double[] counts_ratios = new double[8]; 
     for (int i = 0; i < dna_sequence.length(); i++){ 
      if (dna_sequence.charAt(i) == 'A'){ 
       counts_ratios[0] += 1;} 
      if (dna_sequence.charAt(i) == 'T'){ 
       counts_ratios[1] += 1;} 
      if (dna_sequence.charAt(i) == 'C'){ 
       counts_ratios[2] += 1;} 
      if (dna_sequence.charAt(i) == 'G'){ 
       counts_ratios[3] += 1;} 
      } 
      if (dna_sequence.length() > 0){ 
       counts_ratios[4] = counts_ratios[0]/dna_sequence.length(); 
       counts_ratios[5] = counts_ratios[1]/dna_sequence.length(); 
       counts_ratios[6] = counts_ratios[2]/dna_sequence.length(); 
       counts_ratios[7] = counts_ratios[3]/dna_sequence.length(); 
     }  
     String A_content = Double.toString(counts_ratios[0]) + " , " + Double.toString(counts_ratios[4]); 
     String T_content = Double.toString(counts_ratios[1]) + " , " + Double.toString(counts_ratios[5]); 
     String C_content = Double.toString(counts_ratios[2]) + " , " + Double.toString(counts_ratios[6]); 
     String G_content = Double.toString(counts_ratios[3]) + " , " + Double.toString(counts_ratios[7]); 

     nucleotide_hmap.put('A', A_content); 
     nucleotide_hmap.put('T', T_content); 
     nucleotide_hmap.put('C', C_content); 
     nucleotide_hmap.put('G', G_content); 
    } 
} 
+2

質問を示す_minimal_サブセットを指定してください。 –

+1

あなたがマップに何かを置く唯一の場所は、nuc_content()メソッドです。しかし、このメソッドはどこにも呼び出されません。 –

+0

スタックオーバーフローへようこそ!デバッガの使い方を学ぶ必要があるようです。 [補完的なデバッグ手法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)にご協力ください。その後も問題が残っている場合は、もう少し詳しくお聞かせください。 –

答えて

0

あなたはDNA配列クラスのnuc_contentメソッドを呼び出すことはありません。これを解決するには、nuc_content(dna_sequence);行をDNASequenceクラスに追加します。コンストラクタは次のようになります。

public DNASequence(String dna_sequence){ 
     the_sequence = dna_sequence; 
     complement_hmap.put('A', 'T'); 
     complement_hmap.put('T', 'A'); 
     complement_hmap.put('C', 'G'); 
     complement_hmap.put('G', 'C'); 
     nuc_content(dna_sequence); 
    } 
+0

ありがとうございます。静的な部分をHashMapに追加しました。しかし、印刷がうまくいかないようです。私はサブクラスでキーと値を追加しましたが、nucleotidecontentメソッドで 'nucleotide_hmap.size()'を使ってサイズを表示したとき、それが4になるときにゼロと表示されます。 –

+0

@ B.L。どのクラスから印刷していますか、どのラインでですか? –

+0

よくこの行に追加しました: 'public void nucleotidecontent(String seq1){ \t \t System.out.println(ヌクレオチド_hmap.size()); { \t \t \tのSystem.out.println(entry.getKey()+ ":" + entry.getValue()):(nucleotide_hmap.entrySet()のMap.Entry <文字、文字列>エントリ)のため \t \t。 \t \t} \t} –

関連する問題