java - 输入不匹配异常(我认为这是一个愚蠢的错误)

标签 java java.util.scanner

当我按下“下一步”按钮时,我收到了一个 InputMismatchException 异常。 以下是具有按钮的面板的代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class PanelSampleYard extends JPanel
{
    private JLabel label;
    private DisplaySampleYard display;
    int times = 0;
    public PanelSampleYard()
    {
        setLayout(new BorderLayout());
        setPreferredSize(new Dimension(200, 125));

        label = new JLabel("Green and Grow Mowing Company", SwingConstants.CENTER);
        add(label, BorderLayout.NORTH);

        display = new DisplaySampleYard();
        add(display, BorderLayout.CENTER);

        JPanel subpanel = new JPanel();
        subpanel.setLayout(new FlowLayout());
        JButton next = new JButton("Next");
        JButton quit = new JButton("Quit");
        next.addActionListener(new Listener1());
        quit.addActionListener(new Listener2());
        subpanel.add(next);
        subpanel.add(quit);
        add(subpanel, BorderLayout.SOUTH);
    }
    private class Listener1 implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            display.next(display.contents(times));
            times++;
        }
    }
    private class Listener2 implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            System.exit(0);
        }
    }
} 

面板内的显示代码:

import javax.swing.*;
import java.awt.*;
import java.util.*; 
public class DisplaySampleYard extends JPanel
{
    private JLabel label;
    private JTextField last, first, size, cost, total;
    double sum = 0;
    int index = 0;
    public DisplaySampleYard()
    {
        setLayout(new GridLayout(5,2));
        last = new JTextField("");
        add(new JLabel("Last Name:"));
        add(last);
        first = new JTextField("");
        add(new JLabel("First Name:"));
        add(first);
        size = new JTextField("");
        add(new JLabel("Lawn Size:"));
        add(size);
        cost = new JTextField("");
        add(new JLabel("Total Cost:"));
        add(cost);
        total = new JTextField("");
        add(new JLabel("Running Total:"));
        add(total);
    }
    public void next(Customer c)
    {
        last.setText(c.getLastName()+"");
        first.setText(c.getFirstName()+"");
        size.setText(c.getSize()+"");
        cost.setText(c.getCost()+"");
        sum = sum + c.getCost();
        total.setText(""+sum);
    }
    public Customer contents(int index)
    {
        Scanner infile = new Scanner("greenGrow.txt");
        int reps = infile.nextInt();
        Customer[] array = new Customer[reps];
        for(int x = 0; x<reps; x++)
        {
            array[x].setLastName(infile.next());
            array[x].setFirstName(infile.next());
            array[x].setSize(infile.nextInt());
        }
        return array[index];
    }
}

扫描仪正在读取的数据文件包含:

5
Jeffers
Tom
5000
Smith
Sam
10000
Nevar
Tina
15000
Kim
Lisa
20000
Black
Kim
30000

我的代码有什么问题吗?预先感谢!

附注还有一些类,但我不认为它们导致了这个问题

最佳答案

当您使用Scanner读取文件时,您应该通过File类型参数构造,它将扫描指定文件中的值。像:

new Scanner(new File("greenGrow.txt"));

如果由String构造,Scanner将扫描指定String中的值

关于java - 输入不匹配异常(我认为这是一个愚蠢的错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30837248/

相关文章:

java - 单击按钮时更改 int 的值

java - 使用ArrayList进行用户输入

java - Intent 不在以下代码中打开

java - 为什么这会导致堆栈溢出错误?有向图

java - Spring 两种不同的应用上下文——属性占位符冲突

Java - 将文件扫描仪与用户输入扫描仪结合起来

java - 为什么从 cmd 调用 jar 时 java 扫描仪不起作用?

java - 扫描仪输入 - 输入流结束指示器

java - 如何从扫描仪中删除分隔符恢复? ( java )

java - 如何更改Json格式?