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

Java代码挂在扫描器hasNextLine上

朱昊乾
2023-03-14

首先,我是java新手,正在尝试完成学校关于创建自动售货机的作业。我的程序接收两个文件作为cli参数,一个是产品,另一个是钱。

 (while (moneyTemp.hasNextLine());)
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;

public class VendingMachine
{
    static Scanner input = new Scanner (System.in);

    public static void main(String[] args) 
    {
        try
        {
            Scanner productTempFile = new Scanner(new File(args[0]));
            Scanner moneyTemp = new Scanner(new File(args[1]));
            int numProducts = 0; //Number of products to be loaded to the machines
            int numMoney = 0;   //Number of money objects to be loaded in the machine

            while (productTempFile.hasNextLine()) //This block will get the number of products
            {
                numProducts++;
                productTempFile.nextLine();
            }
            productTempFile.close();


            Product[] invArray = new Product[numProducts];
            Scanner myFile = new Scanner(new File(args[0]));

            for(int i = 0; i < numProducts; i++)  //This block populates the array of products
            {
                String inputLine = myFile.nextLine();                               
                String[] lineArray = inputLine.split(",");

                invArray[i] = new Product(lineArray[0], Double.valueOf(lineArray[1]), lineArray[2], lineArray[3],
                        Double.valueOf(lineArray[4]), Integer.valueOf(lineArray[5]));
            } 

            myFile.close();

            System.out.println("I'm here");

            while (moneyTemp.hasNextLine()); //This block gets the number of different money items
            {
                numMoney++;
                moneyTemp.nextLine();               
            }

下面是我提供的ie Arg[1]的第二个文件,它的格式与第一个相同,工作。

PaperCurrency,100 Dollar Bill,100.0,medium,paper,0
PaperCurrency,50 Dollar Bill,50.0,medium,paper,0
PaperCurrency,20 Dollar Bill,20.0,medium,paper,0
PaperCurrency,10 Dollar Bill,10.0,medium,paper,4
PaperCurrency,5 Dollar Bill,5.0,medium,paper,8
PaperCurrency,1 Dollar Bill,100.0,medium,paper,16
CoinCurrency,50 Cent Piece,0.5,large,metal,10
CoinCurrency,Quarter,0.25,medium,metal,20
CoinCurrency,Dime,0.1,small,metal,30
CoinCurrency,Nickel,0.05,small,metal,40
CoinCurrency,Penny,0.01,small,metal,50

任何帮助都将不胜感激。谢谢

共有1个答案

裘嘉树
2023-03-14

从行中删除分号

 while (moneyTemp.hasNextLine());

分号使while循环完成它的主体而不做任何事情意味着它像while(){},当while条件为true时,什么也不做,并且由于您的条件为hasnextline(),它会一次又一次地检查相同的行,导致无限循环。

 类似资料:
  • 问题内容: 首先,我是Java的新手,并试图完成学校创建自动售货机的作业。我的程序将2个文件用作cli参数,一个用于产品,另一个用于金钱。 为了我的一生,我无法弄清楚代码为什么挂在第42行上 我尝试使用断点在eclipse上进行调试,并注意到代码永远不会超过这一行。将print语句放入while循环内,我没有得到输出,所以我知道它没有循环。 Java文档说hasNextLine可以阻止等待用户输入

  • 如果我们用扫描仪进行控制台输入,我们有两种方法来编写输入循环 我相信第二个更正确,因为在hasNextLine()javadoc中提到了这个方法正在等待新的行。但为什么第一个也是工作的,等待一个新的行没有suchelementexception?

  • **这是我的java代码,预期输出如下: 输入第一个数字:25 输入第二个数字:5 25 x 5=125 在我插入代码并运行它之后,输出与答案相差太大 以下是输出: 如何修复我的代码?

  • 我有一个类,它创建多个对象,并将它们放入中,如下所示: 我有一个应用程序,它从控制台扫描输入“add”,如果找到,就调用方法,如下所示: 应用程序应该允许用户输入“add”,但在调用方法后,将出现错误“no line found”。 我猜这是因为方法中的没有关闭,然后在需要时重新打开。这是程序的问题吗?如果是,我该如何修复它? 请注意,这个程序还没有完成,因为我将添加一个出售这些股票的销售方法。这

  • 问题内容: 我想编写一个应用程序,其中的键绑定特定于键盘上键的位置,而不是键映射到的字符。例如,在美国键盘上位于t和u之间的键应执行特定的功能,而不管它在美国是Y还是在德国是Z。 我认为这样做的方法是获取键盘给操作系统的实际扫描代码,以代表按下的键。如何在Java中执行此操作? 还是有另一种方法可以实现相同的功能? 问题答案: 正如 MadProgrammer 所说:您必须使用JNA或JNI。您还

  • 本文向大家介绍PHP Web木马扫描器代码分享,包括了PHP Web木马扫描器代码分享的使用技巧和注意事项,需要的朋友参考一下 不废话了,直接贴代码了。 代码如下: 以上代码就是php web木马扫描器代码分享,本文附有注释,有不明白的欢迎给我留言,相信实现方法也不止以上一种,欢迎大家多多分享不同的实现方法。