我的字符串可以容纳或使用多少字符数据?

时间:2015-01-14 16:41:39

标签: java string input crash ram

我的程序是将一串字符限制为正则表达式[gcatGCAT],并将该字符串转换为一串互补字符。互补字符是g到c,c到g,a到u,t到a。

例如,用户输入的字符串“gact”应该产生“cuga”。

然而,当输入大约50个字符或以上的字符串时(我不计算我输入了多少个字符串,只需按下键盘上的g和c键一段时间。)我想我用完了很多计算机的RAM,程序冻结,我的操作系统背景改变了什么。 (我不想尝试重现它,因为我很害怕)

我是否在使用太多的ram来输入如此大的字符串并对其进行操作?有什么方法我可以简化这个不使用尽可能多的内存,如果这是问题?我实际上希望能够接受200到500个字符的内容,其中1000个是最优的。我是编码的新手,所以请原谅我,无论如何我都错了。

import java.text.DecimalFormat;
import javax.swing.SwingUtilities;
import javax.swing.JOptionPane;
import java.util.Random;

//getting my feet wet, 1/13/2015, program is to take a strand of nucleotides, G C  A  T, for DNA and give
//the complementary RNA strand, C G  U A.

public class practiceSixty {

public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable() {
     public void run() {

        String input = null;

        boolean loopControl = true;

        char nucleotide;

        int repeat;

    do{
          do{
            input = JOptionPane.showInputDialog(null, " Enter the sequence of nucleotides(G,C,A and T) for DNA, no spaces ");

            }while(!input.matches("[GCATgcat]+")); //uses regular expresions, This method returns true if, and only if, this string matches the given regular expression.


            JOptionPane.showMessageDialog(null, "the data you entered is " + input);

            StringBuilder dna = new StringBuilder(input);

            for(int i = 0; i < input.length(); i++)
            {
            nucleotide = input.charAt(i);

                if(nucleotide == 'G' || nucleotide == 'g' )
                {
                    dna.setCharAt(i, 'c');
                }
                else if( nucleotide == 'C' || nucleotide == 'c')
                {
                    dna.setCharAt(i, 'g');
                }
                if(nucleotide == 'A' || nucleotide == 'a')
                {
                    dna.setCharAt(i, 'u');
                }
                else if(nucleotide == 'T' || nucleotide == 't')
                {
                    dna.setCharAt(i, 'a');
                }
            }
             JOptionPane.showMessageDialog(null, "the DNA is  , " + input + "  the RNA is  " + dna);

             repeat = JOptionPane.showConfirmDialog(null, "Press Yes to continue, No to quit ", "please confirm", JOptionPane.YES_NO_OPTION);

             }while(repeat == JOptionPane.YES_OPTION);
 }
});
}
}

1 个答案:

答案 0 :(得分:1)

您可以使用string.replace()。但是,你不能只用一个替换另一个,因为这会搞掉以后的替换。

input = input.toLowerCase();
input = input.replace('a','1');
input = input.replace('c','2');
input = input.replace('g','3');
input = input.replace('t','4');
input = input.replace('1','u');
input = input.replace('2','g');
input = input.replace('3','c');
input = input.replace('4','a');