- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我正在制作一个关于 ATM 系统的 GUI我想要做的是,当客户输入他/她的帐号并固定时,程序将在 DATABASE.txt 中搜索它,当它与 DATABASE.txt 中的信息匹配时。程序将自动显示名称、帐号、年龄、性别和平衡。但就我而言,我收到此错误,但我不知道如何修复它。请帮助我。如果你帮助我,我将不胜感激:)谢谢你,干杯:)。附:我希望你们能理解我的源代码T^T。
一级
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
public class Xavier1 extends JFrame implements ActionListener,Runnable
{
JButton a[] = new JButton [10];
JLabel pin,acc;
JTextField acc1;
JButton del,ok,crt;
int c=0,d=0,e=0;
JPasswordField pin1;
JFrame x;
String us,pw;
public void run()
{
}
public Xavier1()
{
x = new JFrame("ATM");
x.setLayout(null);
x.setBounds(400,100,550,500);
x.setVisible(true);
JPanel x3 = new JPanel();
x.add(x3);
x3.setVisible(true);
x3.setBounds(150,420,250,100);
crt = new JButton("Create Account");
crt.addActionListener(this);
x3.add(crt);
JPanel x2 = new JPanel();
x.add(x2);
x2.setBounds(150,10,250,100);
x2.setVisible(true);
x2.setLayout(new GridLayout(4,2));
pin = new JLabel("PIN");
acc = new JLabel("ACCOUNT NUMBER");
pin1 = new JPasswordField(20);
acc1 = new JTextField(20);
x2.add(acc);
x2.add(acc1);
x2.add(pin);
x2.add(pin1);
JPanel x1 = new JPanel();
x.add(x1);
x1.setBounds(150,200,250,200);
x1.setVisible(true);
x1.setLayout(new GridLayout(4,3));
for(int b=0;b<10;b++)
{
a[b] = new JButton();
a[b].setText(Integer.toString(b));
x1.add(a[b]);
a[b].addActionListener(this);
}
ok = new JButton("OK");
ok.addActionListener(this);
del = new JButton("DEL");
del.addActionListener(this);
x1.add(ok);
x1.add(del);
}
public static void main (String args[])
{
Xavier1 xs = new Xavier1();
Thread xd = new Thread(xs);
xd.setDaemon(true);
}
public void actionPerformed(ActionEvent z)
{
Object zz = z.getSource();
if(e == 0)
{
for(int c=0;c<a.length;c++)
{
if(zz == a[c])
{
acc1.setText(acc1.getText()+a[c].getText());
}
}
}
if(zz == ok)
{
e++;
}
if(e==2)
{
GateKeeper();
}
if(e == 1)
{
for(int d=0;d<a.length;d++)
{
if(zz == a[d])
{
pin1.setText(pin1.getText()+a[d].getText());
}
}
}
if(zz == crt)
{
Reg rs = new Reg();
Thread sr = new Thread(rs);
sr.start();
x.setVisible(false);
}
if(zz == del)
{
if(e == 0)
{
acc1.setText(null);
}
if(e == 1)
{
pin1.setText(null);
}
}
}
public void GateKeeper()
{
try
{
Scanner sc = new Scanner(new File("DATABASE.txt"));
int loop = sc.nextInt();
sc.nextLine();
for(int gk=0;gk<loop;gk++)
{
String ps[] = sc.nextLine().split(" ");
us = ps[0];
pw = ps[1];
if(acc1.getText().equals(us));
{
if(pin1.getText().equals(pw))
{
Bank b = new Bank();
Thread xb = new Thread(b);
xb.start();
x.setVisible(false);
}
}
}
}
catch(FileNotFoundException s)
{
}
}
}
二等
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
public class Reg extends Bank
{
JButton res,back,next;
JFrame r;
public Reg()
{
r = new JFrame("REGISTRATION");
r.setVisible(true);
x.setVisible(false);
r.setBounds(400,100,550,500);
r.setLayout(null);
X.setVisible(false);
n = new JLabel("Name");
age = new JLabel("AGE");
sex = new JLabel("SEX");
dep = new JLabel("DEPOSIT");
accn = new JLabel("ACCOUNT NUMBER");
pins = new JLabel("PIN");
n1 = new JTextField(20);
accn1 = new JTextField(20);
bal1 = new JTextField(20);
sex1 = new JTextField(20);
age1 = new JTextField(20);
dep1 = new JTextField(20);
pins1 = new JPasswordField(20);
JPanel r1 = new JPanel();
r.add(r1);
r1.setVisible(true);
r1.setBounds(50,10,400,400);
r1.setLayout(new GridLayout(7,2));
r1.add(accn);
r1.add(accn1);
r1.add(pins);
r1.add(pins1);
r1.add(n);
r1.add(n1);
r1.add(age);
r1.add(age1);
r1.add(sex);
r1.add(sex1);
r1.add(dep);
r1.add(dep1);
JPanel r2 = new JPanel();
r.add(r2);
r2.setVisible(true);
r2.setBounds(130,400,300,50);
r2.setLayout(new GridLayout(0,3));
back = new JButton("BACK");
next = new JButton("NEXT");
res = new JButton("REGISTER!");
res.addActionListener(this);
back.addActionListener(this);
next.addActionListener(this);
r2.add(back);
r2.add(res);
r2.add(next);
}
public void DATABASE()
{
try
{
FileWriter fw = new FileWriter("DATABASE.txt",true);
PrintWriter pw = new PrintWriter(fw);
pw.print(accn1.getText()+" ");
pw.print(pins1.getText()+" ");
pw.print(n1.getText()+" ");
pw.print(age1.getText()+" ");
pw.print(sex1.getText()+" ");
pw.print(dep1.getText()+" ");
pw.println();
pw.close();
}
catch(IOException s)
{
}
}
public static void main(String args[])
{
}
public void actionPerformed(ActionEvent rg)
{
Object rz = rg.getSource();
if(rz == res)
{
DATABASE();
}
if(rz == next)
{
Bank b = new Bank();
Thread xb = new Thread(b);
xb.start();
r.setVisible(false);
}
if(rz == back)
{
Xavier1 xs = new Xavier1();
Thread xd = new Thread(xs);
xd.start();
r.setVisible(false);
}
}
}
三级
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
public class Bank extends Xavier1
{
JLabel n,accn,bal,age,sex,dep,pins;
JFrame X,r;
JTextField n1,accn1,bal1,sex1,age1,dep1;
JPasswordField pins1;
JLabel Xn,Xacc,Xbal,Xage,Xsex;
String xn,xacc,xbal,xage,xsex;
public void reader()
{
try
{
FileReader fr = new FileReader("DATABASE.TXT");
BufferedReader br = new BufferedReader(fr);
}
catch(FileNotFoundException s)
{
}
}
public Bank()
{
X = new JFrame("BANK");
X.setVisible(true);
X.setBounds(400,100,550,500);
X.setLayout(null);
x.setVisible(false);
JPanel info = new JPanel();
X.add(info);
info.setVisible(true);
info.setBounds(50,10,400,400);
info.setLayout(new GridLayout(7,2));
try
{
Scanner s2 = new Scanner(new File("DATABASE.txt"));
int loop2 = s2.nextInt();
for(int gkz=0;gkz<loop2;gkz++)
{
String info2[]= s2.nextLine().split(" ");
xn = info2[2];
xacc = info2[0];
xage = info2[3];
xsex = info2[4];
xbal =info2[5];
if(acc1.getText().equals(us))
{
if(pin1.getText().equals(pw))
{
JLabel Xn= new JLabel("NAME: "+xn);
JLabel Xacc = new JLabel("ACCOUNT NUMBER: "+xacc);
JLabel Xage = new JLabel("AGE: "+xage);
JLabel Xsex = new JLabel("SEX: "+sex);
JLabel Xbal = new JLabel("BALANCE: "+xbal);
}
}
}
}
catch(FileNotFoundException s)
{
}
}
public static void main(String args[])
{
}
public void actionPerformed(ActionEvent z1)
{
Object z2 = z1.getSource();
}
}
这是我遇到的错误
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2
at Bank.<init>(Bank.java:54)
at Xavier1.GateKeeper(Xavier1.java:160)
at Xavier1.actionPerformed(Xavier1.java:108)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
最佳答案
java.lang.ArrayIndexOutOfBoundsException: 2
(Bank.java:54)(Bank.java:54) -
xn = info2[2];
这就是你的问题。假设你的文件是这样的
3
data data data data
data data data data
下面代码中的第一行将读取 3
,但扫描仪将停留在该行。
int loop2 = s2.nextInt();
for(int gkz=0;gkz<loop2;gkz++)
{
String info2[]= s2.nextLine().split(" ");
因此,对 nextLine()
的下一次调用将仅消耗换行符,并且只会带您到下一行,但实际上不会读取 它。所以实际上 s2.nextLine().split("");
将返回一个空数组。因此,当您尝试执行 info[2]
时,您会收到 ArrayIndexOutOfBoundsException
因为索引 2 不存在。
两个可能的修复。
int loop2 = s2.nextInt();
之后调用 s2.nextLine()
即可就我个人而言,我更喜欢总是按行读取(而不是 nextInt/nextDouble)并解析它,这样我就不会遇到您遇到的问题。
int loop2 = Integer.parseInt(s2.nextLine().trim());
for(int gkz=0;gkz<loop2;gkz++) {
...
关于java - 文本文件到 jlabel 以及 jlabel 与文本文件的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21812501/
我有一个简单的 pyparsing 构造,用于提取日志消息的部分内容。看起来像这样 log_line = 时间戳 + task_info + Suppress(LineEnd()) 此结构可以很好地解
我想定义一个函数 scaryDict(),它接受一个参数(textfile)并返回 textfile 中的单词按字母顺序排列,基本上生成字典但不打印任何一个或两个字母的单词。 这是我目前所拥有的……不
我正在尝试弄清楚如何包含对外部数据文件(文本形式)的引用,我希望通过 Web Start (JNLP) 与我的应用程序一起分发该文件。筛选 JNLP 结构的文档,我发现您可以包含对 JAR、nativ
我尝试将 Java 程序从 Eclipse 导出到 .jar 文件,但遇到了问题。它运行良好,但由于某种原因它没有找到它应该从中获取数据的文本文件。如果有人能帮忙解决这个问题,我将非常感激。 最佳答案
在过去的 20 个小时里,我试图解决以下问题,所以在开始考虑跳出窗外之前我想,我最好在这里寻求帮助: I have a text file with following content: ID 1 T
今天我试图删除一个简单文本文件中的重复行,例如: input (list.txt): hello hello try output (list.txt): try 我尝试使用 Notepad++ 删除
我将一个文本文件添加到我的项目中,如下路径所示: Myproject/WebPages/stopwords.txt 图片: http://s7.postimg.org/w65vc3lx7/Untitl
所以我在我的程序上工作,现在我无法找到解决方案。我需要在 fext 文件中替换更多的符号,目前程序只将“TIT”替换为代码“*245$a”,如果我想用同样的方式替换其他字母,程序不会改变。有人知道如何
这是一个非常简单的问题,但无论我看哪里,我都会得到不同的答案(这是因为它在 c++0x 中已经改变还是将要改变?): 在 C++ 中,我如何从一个文本文件中读取两个数字并将它们输出到另一个文本文件中?
我有一个 C++ 项目应该添加 到每一行的开头和到每一行的末尾。这适用于普通英文文本,但我有一个中文文本文件,我想这样做,但它不起作用。我通常使用 .txt 文件,但为此我必须使用 .rtf 来保存中
所以我的驱动看起来像这样: #include "problem2.h" #include "problem1.h" #include "problem3.h" #include #include
我有一个包含字符串标识符的 ascii 数字文本文件(>50k 行),可以将其视为数据 vector 的集合。根据用户输入,应用程序在运行时只需要这些数据 vector 之一。 据我所知,我有 3 个
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
这个问题在这里已经有了答案: 关闭 12 年前。 Possible Duplicate: Any decent text diff/merge engine for .NET ? 我有两个文本文件,
我正在尝试将对话选择器中的唤醒时间和 sleep 时间记录到这样的文本文件中,但是对方法 commitToFile2 的调用不会 append 文本文件“savedData.txt”。 我知道这段代码
我开发了一个 android webview 并尝试在单击 webview 中的链接时下载生成的数据:文本文件。 webView.setDownloadListener(new Downloa
我在一个文本文件中有 250 张图像/天 4000*3000 像素。 file '/home/user/camdata/nonseqdata.jpg' file '/home/user/camdata
我曾多次尝试将此配置文件转换为多维数组,这意味着我必须读取 config.txt 文件,然后必须将其转换为多维数组。我需要帮助或一些建议。 配置文件: id=www session.timeout=1
我正在尝试使用 sublime text 3 打开文件,我想用光标在具体行号处打开它。 我一直在查subl --help但我找不到混凝土线的选择。因此我只是使用:subl filename 有没有办法
我想在我的应用程序中快速显示一个大文本文件的内容,而不是将整个文件加载到内存中。 其他人是怎么做的? Total Commander是一个很棒的工具,它有一个很棒的内部查看器可以做到这一点。无论文件有
我是一名优秀的程序员,十分优秀!