当前位置: 首页 > 知识库问答 >
问题:

为什么我的 Java 程序跳过了“while”循环?

华修永
2023-03-14

我目前有一个问题,一个'而'循环不执行。如果输入文本文件有下一行,我将循环条件设置为true。然而,当我执行我的程序时,循环没有运行。我通过添加一个“System.out.println(text)”来确认这一点,正如我所怀疑的,没有产生任何文本。

什么问题导致循环无法执行?

import java.io.IOException;
import java.io.PrintWriter;
import java.io.File;
import java.util.Random;
import java.util.Scanner;

public class BottleCapPrize
{
public static void main (String[] args) throws IOException
{
    Scanner in = new Scanner(System.in);
    PrintWriter outFile = new PrintWriter(new File("guess.txt"));
    Scanner inFile = new Scanner(new File("guess.txt"));
    Random rand = new Random();

    System.out.print("Enter number of trials: ");
    int trials = in.nextInt();

    int guess = 0;
    int totalGuess = 0;

    for (int trial = 0; trial < trials; ++trial)
    {
        guess = 0;

        int winCap = rand.nextInt(5) + 1;
        int guessCap = rand.nextInt(5) + 1;

        ++guess;
        while (guessCap != winCap)
        {
            guessCap = rand.nextInt(5) + 1;
            ++guess;
        }

        outFile.println(guess);
    }

    while (inFile.hasNextLine())
    {
        String number = inFile.nextLine();
        guess = Integer.parseInt(number);
        totalGuess += guess;

        System.out.println("This should print if while loop conditions set to true.");
    }

    double average = (double)totalGuess / trials;

    System.out.println(totalGuess + " " + guess);
    System.out.println("On average, it took " + average + " bottles to win.");
    System.out.println();

    inFile.close();
    outFile.close();

}
}

共有2个答案

储承
2023-03-14

第一步是验证您的外部循环,for循环实际上也在运行。如果试验碰巧是0,那么您的for循环也将永远不会运行,并且您将永远不会到达而循环本身。

融渊
2023-03-14

确保在使用guess.txt文件后,通过执行outFile.flush()将内容刷新到outFile.println(猜测)文件。

 类似资料:
  • 我想我的程序跳过了while循环,但我真的不确定到底发生了什么。该函数应该通过找到GCD,然后将分子和分母除以该数字来减少分数。 我得到分子和分母的绝对值,以确保如果分数是负数,我会在最后保持它。如果分子为0,则要求我返回(0,1)。问题是关于while循环。。。似乎它被完全跳过了。有什么建议吗?

  • 我想写一个计算长除法问题总进位的代码。这是我为carries编写的函数。我相信问题在于,第一个while循环并没有一直运行。如果是,为什么?这是在Python 3.5中实现的。

  • 这是我试图解决的问题。 “墨西哥人口为6200万,正以7%的年增长率增长。美国目前的人口为2.8亿,正以2%的年增长率增长。如果这两个国家要保持目前的增长率,墨西哥人口将在多少年内超过美国的一半?你的计划应该回答这个问题。” 好的,这就是我目前掌握的代码。当我运行程序时,我得到了这个错误。 不太确定如何修复它。有人能帮忙吗?:/ 编辑 对于任何想知道我最终让代码工作的人。这是代码。 导入java.

  • 每当我运行下面的java代码时,它都会编译,但包含替换方法的行似乎被跳过,因此输入的字符串和输出(newMessage)是相同的。为什么?变量 C 和变量 D 是字符... 进口java.util.Scanner;

  • 问题内容: 我有一个整数列表,我正在运行-loop来发现两个元素的总和是否等于另一个变量。所以,如果是等于和我有一个整数列表: ,那么函数应该打印所有数字的不同组合,。 我感觉自己快到了,但是当我使用该功能时,列表中发生了一些奇怪的事情。下面的代码用于显示所有需要计算的数字组合,但是列表中的所有其他元素都被跳过。 这是输出: 请注意如何,,,和被跳过。我正在使用第二个-loop不会使用原始值,然后

  • 问题内容: 我的应用程序在Linux上作为后台进程运行。当前在“终端”窗口的命令行中启动。 最近,一个用户执行该应用程序一段时间后,它神秘地死了。文本: 被杀 在航站楼上。这发生了两次。我问其他终端是否有人使用kill命令杀死进程?没有。 Linux在什么情况下会决定终止我的进程?我相信外壳程序显示为“ killed”,因为该进程在收到kill(9)信号后就死了。如果Linux发送了kill信号,