0

そのため、このプロジェクトの第 2 部で問題が発生しています。各エントリのカウントを与える以下のコードがありますが、高値と安値を取得する方法がわかりません...よろしくお願いします!

A1達人

このプログラムは、A1Novice と同様に入力を処理する必要がありますが、カウントを生成することに加えて、各核酸塩基の最小数と最大数を持つ DNA 鎖を追跡し、それらの鎖を出力に出力する必要があります。したがって、次の入力が与えられます。

A 
CC 
AATA 
GGG
TTT
end

プログラムは次の出力を生成する必要があります。

A カウント: 4
C カウント: 2
G カウント: 3
T カウント: 4
Low A カウント: A
High A カウント: AATA
Low C カウント: CC
High C カウント: CC
Low G カウント: GGG
High G カウント: GGG
Low T カウント: AATA
高 T カウント: TTT

package a1;

import java.util.Scanner;

public class A1Novice {
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);
        System.out.println("Enter nucleobases: (enter end when done)");
        process(s);
    }

    public static void process(Scanner s){
        int a = 0, c = 0, g = 0, t = 0;
        while(s.hasNext()){
            String id = s.next();
            if(id.equalsIgnoreCase("end")){
                break;
            }
            for(int i = 0; i < id.length(); i++){
                char singleChar = id.charAt(i);
                if (singleChar=='A' || singleChar=='a'){
                    a++;
                }
                else if(singleChar=='C' || singleChar=='c'){
                    c++;
                }
                else if(singleChar=='G' || singleChar=='g'){
                    g++;
                }
                else if(singleChar=='T' || singleChar=='t'){
                    t++;
                }

            }
        }  
        System.out.println("A count: " + a);
        System.out.println("C count: " + c);
        System.out.println("G count: " + g);
        System.out.println("T count: " + t);
    }
}
4

2 に答える 2

0

できることは、4 つの塩基のうちの 1 つだけのデータを格納するクラスを作成することです。

  • そのベースを表す文字、
  • これまでの合計数、
  • これまでのところ、その塩基の数が最も多い行 (およびその数)
  • これまでのところ、その塩基の数が最も少ない行 (およびその数)。

これらのうちの 4 つをインスタンス化します (コンストラクターで文字を渡す必要があります)。

次に、テキスト行をパラメーターとして取り、その行に従ってクラスのすべてのフィールドを更新するメソッドをそのクラスに記述します。また、いくつかのメソッドでクラスのフィールドを表示する必要があります。最後に、mainメソッド (または他のメソッド) にネストされたループを作成し、テキストの各行を各オブジェクトに順番に渡します。

ただし、コードを書くつもりはありません。スタック オーバーフローでは十分な報酬が得られません。

于 2014-01-21T22:09:36.173 に答える
0

考えすぎかもしれませんが、ここまでです。私の最初の考えは、hasNext() の代わりに hasNextLine() を使用して、入力の各行を配列リストに格納することでした。このようにして、配列 ArrayList arrInput の内容は {"A","CC","AATA","GGG","TTT"} になります。ここで配列を作成します。たとえば、arrInput と同じサイズの processArray としましょう。processArray の各エントリには、入力の各行の A、C、T、または G の数を格納する、長さ 4 の別の配列があります (入力には A、C、T、G の文字のみが含まれると仮定します)。コンセプトのグラフィック表現を添付しましたが、前にも言ったように、これは考えすぎだと思います。ここに画像の説明を入力

于 2014-01-21T22:28:36.680 に答える