gpt4 book ai didi

java - 虽然 hasNext() 不会结束

转载 作者:行者123 更新时间:2023-12-01 22:04:09 28 4
gpt4 key购买 nike

我有一个作业程序,但我无法弄清楚最后的花絮。它需要能够接受一大段“DNA”代码。给出的样本在 100,000+ 范围内。我一开始就写了适合小样本、一行的内容,非常棒。助教告诉我,我应该能够添加一个 while (input.hasNext()) ,它将完成的不仅仅是我复制并粘贴到控制台的示例文件的第一行。它确实是这样做的!它只是不会结束。我尝试在我认为合适的地方使用 break;,但最终回到了原来的位置,只计算了一行。

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.

最佳答案

您永远不会消耗循环内的任何输入。您真正读取新数据的唯一时间是在进入 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;
}
}
}

在此,我假设您使用文件中的输入重定向等方式进行输入,而不是手动输入行。如果您确实在运行时输入它们,那么这将不起作用,因为程序无法知道您何时完成。

关于java - 虽然 hasNext() 不会结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33114469/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com