用户“登录”后,程序将无法继续运行

时间:2014-01-08 12:06:57

标签: java menu

所以我创建了一个允许用户登录“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);

        }

    }
}

}

3 个答案:

答案 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);
  }
相关问题