0

所以我在这个项目的第二部分遇到了麻烦。我有下面的代码,它给出了每个条目的计数,但我不知道如何获得高点和低点......提前致谢!

A1熟练

这个程序应该像 A1Novice 一样处理输入,但除了产生计数之外,它还应该跟踪每个核碱基中具有最小和最大数量的 DNA 链,并将这些链打印到输出。因此,给定以下输入:

A 
CC 
AATA 
GGG
TTT
end

该程序应产生以下输出:

A 计数:4
C 计数:2
G 计数:3
T 计数:4
低 A 计数:A
高 A 计数:AATA
低 C 计数:CC
高 C 计数:CC
低 G 计数:GGG
高 G 计数:GGG
低 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

我可能想多了,但我走了。我最初的想法是使用 hasNextLine() 而不是 hasNext() 将每一行输入存储到一个数组列表中。这样,您将得到一个数组 ArrayList arrInput,其中包含以下内容 = {"A","CC","AATA","GGG","TTT"}。现在您创建一个数组,假设 processArray 与您的 arrInput 具有相同的大小。processArray 的每个条目都有另一个长度为 4 的数组(假设输入中只能出现字母 A、C、T、G),它将存储每行输入的 A、C、T 或 G 的数量。我附上了这个概念的图形表示,但就像我之前所说的那样,我认为我想多了。在此处输入图像描述

于 2014-01-21T22:28:36.680 回答
0

你可以做的是编写一个类来存储四个基础之一的数据 -

  • 代表该基地的字母,
  • 到目前为止的总数,
  • 到目前为止,该基数最多的行(以及该数字是多少)
  • 到目前为止,该基数最少的行(以及该数字是多少)。

实例化其中的四个(您需要在构造函数中传递字母)。

然后在该类中编写一个以一行文本为参数的方法,并根据该行更新该类的所有字段。您还需要一些方法来显示类的字段。main最后,在您的方法(或其他方法)中有嵌套循环,将每行文本依次传递给每个对象。

不过,我不会为您编写代码。Stack Overflow 没有给我足够的报酬。

于 2014-01-21T22:09:36.173 回答