Java 项目赢得';t在用户';登录';

Java 项目赢得';t在用户';登录';,java,menu,Java,Menu,因此,我正在创建一个程序,允许用户登录到“工资应用程序”。用户名、密码和帐号已硬编码,允许用户尝试登录三次。如果三次尝试失败,程序将终止。如果用户成功登录,程序将继续运行并打开菜单。我遇到的问题是,一旦用户成功登录,程序将无法继续运行(无法打开菜单)。我可能错过了一些非常基本的东西,但我似乎找不出哪里出了问题。如有任何更正,我们将不胜感激 菜单不完整,我现在只是想让它正常运行 谢谢 我的代码 import java.io.*; import java.lang.*; import java.ut

因此,我正在创建一个程序,允许用户登录到“工资应用程序”。用户名、密码和帐号已硬编码,允许用户尝试登录三次。如果三次尝试失败,程序将终止。如果用户成功登录,程序将继续运行并打开菜单。我遇到的问题是,一旦用户成功登录,程序将无法继续运行(无法打开菜单)。我可能错过了一些非常基本的东西,但我似乎找不出哪里出了问题。如有任何更正,我们将不胜感激

菜单不完整,我现在只是想让它正常运行

谢谢

我的代码

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);

        }

    }
}

}
import java.io.*;
导入java.lang.*;
导入java.util.*;
导入java.awt.event.*;
导入java.awt.*;
导入javax.swing.*;
公共类分配4测试{
公共静态void main(字符串[]args){
扫描仪控制台=新扫描仪(System.in);
最终int用户名=3387;
最终整数密码=5183;
最终国际账户编号=22334455;
int EnteredUsername;
输入密码;
int输入的帐号;

对于(int s=0;s您没有调用
菜单
对象,它永远不会被创建或使用。如果您使用登录使用的相同入口点(
public static void main()
),则不会

您还有第二个入口点,用于创建和使用
菜单
对象,但这不是您正在使用的入口点

您可能希望在成功登录后将第二个入口点代码移动到第一个入口点代码中

  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);
  }

我将您的
菜单
类从
main
方法中上移,使其成为
静态内部类

为了清楚起见,我将其重命名为
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);

        }

    }
}
公共类分配4test{
公共静态void main(字符串[]args){
扫描仪控制台=新扫描仪(System.in);
最终int用户名=3387;
最终整数密码=5183;
最终国际账户编号=22334455;
int EnteredUsername;
输入密码;
int输入的帐号;

对于(int s=0;s,成功登录后,您的代码中有一个中断(退出)。目前,您如何将登录与代码中菜单的创建联系起来

  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);
  }

您好,这工作得很好,但最初程序在三次错误登录尝试后终止,而您提供的代码在三次错误登录尝试后仍会继续打开菜单。是否有办法使程序在三次错误登录尝试后终止,并且仅在成功登录后才打开菜单。除了t工作正常,谢谢。好的,修复了!如果您现在满意,请单击绿色箭头“接受”答案:)