Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 而hasNext()赢了';t端_Java - Fatal编程技术网

Java 而hasNext()赢了';t端

Java 而hasNext()赢了';t端,java,Java,我有一个作业程序,我无法猜出最后的花絮。 它需要能够接受一大段“DNA”代码。给出的样本在100000+范围内。起初我写了一个小样本,一行,非常好。 TA告诉我,我应该能够在while(input.hasNext())时添加,它将完成我复制并粘贴到控制台的示例文件的第一行。当然是这样!它永远不会结束。我尝试使用中断在我认为合适的地方,但最终返回到原来的位置,只计算了一行 Scanner scan = new Scanner(System.in); //Scanner System.out.pr

我有一个作业程序,我无法猜出最后的花絮。 它需要能够接受一大段“DNA”代码。给出的样本在100000+范围内。起初我写了一个小样本,一行,非常好。 TA告诉我,我应该能够在while(input.hasNext())时添加
,它将完成我复制并粘贴到控制台的示例文件的第一行。当然是这样!它永远不会结束。我尝试使用
中断在我认为合适的地方,但最终返回到原来的位置,只计算了一行

Scanner scan = new Scanner(System.in); //Scanner

System.out.println("Enter a DNA sequence consisting of A, T, G, and C, on one line: "); //Instructions for user.
dnaSequence = scan.nextLine();                                                          //Scan for next line of string.
dnaSequence = dnaSequence.toUpperCase();                                                //Converts all letters entered upper case to avoid issues.

while(scan.hasNext()){
    for (int i = 0; i < dnaSequence.length(); i++) //Make i = 0, i has to be less than the length of the entered sequence, will excute count.
    {
        validCount = dnaSequence.charAt(i);    //[FILL IN!]
        switch (validCount)                    //Switch for all valid counts
        {
        case 'A' :    //For any case A.
            countA++; //Count all As.
            break;
        case 'T' :    //For any case T.
            countT++; //Count all Ts.
            break;
        case 'C' :    //For any case C.
            countC++; //Count all Cs.
            break;
        case 'G' :    //For any case G.
            countG++; //Count all Gs.
            break;
        }
    }

    totalCountGC = countG + countC;                         //Math for G and C, together.
    totalCountSequence = countA + countT + countG + countC; //Math for total count of all other counts in switch.
Scanner scan=新的扫描仪(System.in)//扫描仪
println(“在一行输入由a、T、G和C组成的DNA序列:”//用户使用说明。
dnaSequence=scan.nextLine()//扫描下一行字符串。
dnaSequence=dnaSequence.toUpperCase()//将所有输入的字母转换为大写,以避免出现问题。
while(scan.hasNext()){
对于(int i=0;i
您从不使用循环中的任何输入。您实际读取新数据的唯一时间是在您进入while循环之前,在这一行:

dnaSequence = scan.nextLine();
所以基本上你所做的就是从你的输入中读取一行,然后在同一行上一遍又一遍地进行计算

移动它,将
toUpperCase
放入循环中,它将继续读取新行,并最终消耗所有输入。 因此,您的代码如下所示:

while(scan.hasNextLine()){
    String dnaSequence = scan.nextLine().toUpperCase();

    for (int i = 0; i < dnaSequence.length(); i++){
        validCount = dnaSequence.charAt(i);
        switch (validCount){
        case 'A' :
            countA++;
            break;
        case 'T' :
            countT++;
            break;
        case 'C' :
            countC++;
            break;
        case 'G' :
            countG++;
            break;
        }
    }
}
while(scan.hasNextLine()){
字符串dnaSequence=scan.nextLine().toUpperCase();
对于(int i=0;i

在这种情况下,我假设您正在使用类似于文件输入重定向的东西进行输入,而不是手动键入行。如果您确实在运行时键入了行,那么这将不起作用,因为程序无法知道您何时完成了输入。

您从未在循环中使用任何输入。只有在实际读取新数据是在您进入while循环之前,在这一行:

dnaSequence = scan.nextLine();
所以基本上你所做的就是从你的输入中读取一行,然后在同一行上一遍又一遍地进行计算

移动它,将
toUpperCase
放入循环中,它将继续读取新行,并最终消耗所有输入。 因此,您的代码如下所示:

while(scan.hasNextLine()){
    String dnaSequence = scan.nextLine().toUpperCase();

    for (int i = 0; i < dnaSequence.length(); i++){
        validCount = dnaSequence.charAt(i);
        switch (validCount){
        case 'A' :
            countA++;
            break;
        case 'T' :
            countT++;
            break;
        case 'C' :
            countC++;
            break;
        case 'G' :
            countG++;
            break;
        }
    }
}
while(scan.hasNextLine()){
字符串dnaSequence=scan.nextLine().toUpperCase();
对于(int i=0;i

在这种情况下,我假设您正在使用类似于文件输入重定向的东西进行输入,而不是手动键入行。如果您确实在运行时键入了行,那么这将不起作用,因为程序无法知道您何时完成了输入。

您从未在循环中使用任何输入。只有在实际读取新数据是在您进入while循环之前,在这一行:

dnaSequence = scan.nextLine();
所以基本上你所做的就是从你的输入中读取一行,然后在同一行上一遍又一遍地进行计算

移动它,将
toUpperCase
放入循环中,它将继续读取新行,并最终消耗所有输入。 因此,您的代码如下所示:

while(scan.hasNextLine()){
    String dnaSequence = scan.nextLine().toUpperCase();

    for (int i = 0; i < dnaSequence.length(); i++){
        validCount = dnaSequence.charAt(i);
        switch (validCount){
        case 'A' :
            countA++;
            break;
        case 'T' :
            countT++;
            break;
        case 'C' :
            countC++;
            break;
        case 'G' :
            countG++;
            break;
        }
    }
}
while(scan.hasNextLine()){
字符串dnaSequence=scan.nextLine().toUpperCase();
对于(int i=0;i

在这种情况下,我假设您正在使用类似于文件输入重定向的东西进行输入,而不是手动键入行。如果您确实在运行时键入了行,那么这将不起作用,因为程序无法知道您何时完成了输入。

您从未在循环中使用任何输入。只有在实际读取新数据是在您进入while循环之前,在这一行:

dnaSequence = scan.nextLine();
所以基本上你所做的就是r