所以我创建了一个允许用户登录“Wages应用程序”的程序。用户名,密码和帐号已经过硬编码,允许用户三次登录。如果三次尝试失败,则程序将终止。如果用户成功登录,程序将继续运行并打开菜单。我遇到的问题是,一旦用户成功登录,程序将不会继续运行(不会打开菜单)。我可能遗漏了一些非常基本的东西,但我似乎无法找到哪里我错了。任何更正都表示赞赏。
菜单不完整,我只是想让它正好运行。
由于
我的代码;
import java.io.*;
import java.lang.*;
import java.util.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class Assignment4Test {
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
final int Username = 3387;
final int Password = 5183;
final int AccountNumber = 22334455;
int EnteredUsername;
int EnteredPassword;
int EnteredAccountNumber;
for(int s=0;s<=3;s++)
{if (s<3)
{System.out.println("Enter Username");
EnteredUsername = console.nextInt();
System.out.println("Username Entered is " + EnteredUsername);
System.out.println("Enter Password");
EnteredPassword = console.nextInt();
System.out.println("Password Entered is " + EnteredPassword);
System.out.println("Enter Account Number");
EnteredAccountNumber = console.nextInt();
System.out.println("Account Number Entered is " + EnteredAccountNumber);
if (Username == EnteredUsername && (Password == EnteredPassword)
&& (AccountNumber == EnteredAccountNumber)) {
System.out.println("Welcome");
break;
}
else {
System.out.println("Wrong Username, Password or Account Number. Please try again.");
}
}
else
{
System.out.println("3 incorrect enteries detected. Program is terminating, goodbye!");
}
}
class Menu extends JFrame {
JMenuBar menubar;
JMenu TransferAnAmount;
JMenuItem TransferAnAmountToAnotherAccount;
JMenu ListRecentTransactions;
JMenuItem ShowList;
JMenu DisplayCurrentBalance;
JMenuItem ShowBalance;
JMenu ExitProgram;
JMenuItem Exit;
public Menu() {
setLayout (new FlowLayout());
menubar = new JMenuBar();
setJMenuBar (menubar);
TransferAnAmount = new JMenu("Transfer An Amount");
menubar.add(TransferAnAmount);
ListRecentTransactions = new JMenu("List Recent Transactions");
menubar.add(ListRecentTransactions);
DisplayCurrentBalance = new JMenu("Display Current Balance");
menubar.add(DisplayCurrentBalance);
ExitProgram = new JMenu("Exit Program");
menubar.add(ExitProgram);
TransferAnAmountToAnotherAccount = new JMenuItem("Transer an amount to another account");
TransferAnAmount.add(TransferAnAmountToAnotherAccount);
ShowList = new JMenuItem("Show List");
ListRecentTransactions.add(ShowList);
ShowBalance = new JMenuItem("Show Balance");
DisplayCurrentBalance.add(ShowBalance);
Exit = new JMenuItem("Exit Program");
ExitProgram.add(Exit);
event e = new event();
Exit.addActionListener(e);
}
class event implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
public void main (String args[]) {
Menu gui = new Menu();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setSize(600,300);
gui.setVisible(true);
}
}
}
}
答案 0 :(得分:1)
您没有调用Menu
对象,它永远不会被创建或使用。如果您使用登录使用的相同入口点(public static void main()
),则不会。
您有第二个入口点可以创建和使用Menu
对象,但这不是您正在使用的对象。
您可能希望在成功登录后将第二个入口点代码移动到第一个入口点
if (Username == EnteredUsername && (Password == EnteredPassword)
&& (AccountNumber == EnteredAccountNumber)) {
System.out.println("Welcome");
Menu gui = new Menu();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setSize(600,300);
gui.setVisible(true);
}
答案 1 :(得分:0)
我将Menu
课程从main
方法移出,并将其设为static inner class
。
为清楚起见,我将其重命名为MyFrame
,并将main
方法重命名为displayGui
。
如果你什么都不懂,请告诉我。
public class Assignment4Test {
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
final int Username = 3387;
final int Password = 5183;
final int AccountNumber = 22334455;
int EnteredUsername;
int EnteredPassword;
int EnteredAccountNumber;
for (int s = 0; s <= 3; s++) {
if (s < 3) {
System.out.println("Enter Username");
EnteredUsername = console.nextInt();
System.out.println("Username Entered is " + EnteredUsername);
System.out.println("Enter Password");
EnteredPassword = console.nextInt();
System.out.println("Password Entered is " + EnteredPassword);
System.out.println("Enter Account Number");
EnteredAccountNumber = console.nextInt();
System.out.println("Account Number Entered is " + EnteredAccountNumber);
if (Username == EnteredUsername && (Password == EnteredPassword)
&& (AccountNumber == EnteredAccountNumber)) {
System.out.println("Welcome");
new MyFrame().displayGui();
break;
} else {
System.out.println("Wrong Username, Password or Account Number. Please try again.");
}
} else {
System.out.println("3 incorrect enteries detected. Program is terminating, goodbye!");
}
}
}
static class MyFrame extends JFrame {
JMenuBar menubar;
JMenu TransferAnAmount;
JMenuItem TransferAnAmountToAnotherAccount;
JMenu ListRecentTransactions;
JMenuItem ShowList;
JMenu DisplayCurrentBalance;
JMenuItem ShowBalance;
JMenu ExitProgram;
JMenuItem Exit;
public MyFrame() {
setLayout(new FlowLayout());
menubar = new JMenuBar();
setJMenuBar(menubar);
TransferAnAmount = new JMenu("Transfer An Amount");
menubar.add(TransferAnAmount);
ListRecentTransactions = new JMenu("List Recent Transactions");
menubar.add(ListRecentTransactions);
DisplayCurrentBalance = new JMenu("Display Current Balance");
menubar.add(DisplayCurrentBalance);
ExitProgram = new JMenu("Exit Program");
menubar.add(ExitProgram);
TransferAnAmountToAnotherAccount = new JMenuItem("Transer an amount to another account");
TransferAnAmount.add(TransferAnAmountToAnotherAccount);
ShowList = new JMenuItem("Show List");
ListRecentTransactions.add(ShowList);
ShowBalance = new JMenuItem("Show Balance");
DisplayCurrentBalance.add(ShowBalance);
Exit = new JMenuItem("Exit Program");
ExitProgram.add(Exit);
event e = new event();
Exit.addActionListener(e);
}
class event implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
public void displayGui() {
MyFrame gui = new MyFrame();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setSize(600, 300);
gui.setVisible(true);
}
}
}
答案 2 :(得分:0)
成功登录后,您的代码中有一个中断(退出)。目前,您如何将代码中的登录和菜单创建联系起来?
if (Username == EnteredUsername && (Password == EnteredPassword)
&& (AccountNumber == EnteredAccountNumber)) {
System.out.println("Welcome");
break;
}
您应该在成功登录后实例化一个新菜单。您必须执行第二个main
方法中的代码:
if (Username == EnteredUsername && (Password == EnteredPassword)
&& (AccountNumber == EnteredAccountNumber)) {
System.out.println("Welcome");
// Create Menu
Menu gui = new Menu();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setSize(600,300);
gui.setVisible(true);
}