Java 代码不打印 HashMap 的键和值
Java Code not printing Keys and Values of HashMap
我的代码输入了一个用户定义的字符串并将其分类为 DNA、RNA 或 ODD。输出应该打印 HashMap nucleotide_hmap 的键和值,但代码目前没有。我应该在我的代码中更改什么才能使其正常工作?
代码应输出以下内容:
(如果用户输入序列 ATGC)
- ATGC
- A 1 : 0.25
- T 1 : 0.25
- C 1 : 0.25
- G 1 : 0.25
- 序列长度:4
- 逆序:CGTA
- 反补: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);
}
}
您永远不会在 DNASequence class 中调用 nuc_content 方法。要解决此问题,请将行 nuc_content(dna_sequence);
添加到 DNASequence class。构造函数现在应该如下所示:
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);
}
我的代码输入了一个用户定义的字符串并将其分类为 DNA、RNA 或 ODD。输出应该打印 HashMap nucleotide_hmap 的键和值,但代码目前没有。我应该在我的代码中更改什么才能使其正常工作?
代码应输出以下内容: (如果用户输入序列 ATGC)
- ATGC
- A 1 : 0.25
- T 1 : 0.25
- C 1 : 0.25
- G 1 : 0.25
- 序列长度:4
- 逆序:CGTA
- 反补: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);
}
}
您永远不会在 DNASequence class 中调用 nuc_content 方法。要解决此问题,请将行 nuc_content(dna_sequence);
添加到 DNASequence class。构造函数现在应该如下所示:
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);
}