2014-01-08 34 views
0

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

菜单不完整,我只是试图使它在此刻正确运行。

感谢

我的代码;

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

我搬到你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); 

     } 

    } 
} 
+0

你好,这伟大的工作,但原来你而提供的代码继续打开菜单三次连后,不正确的尝试经过三次不正确的登录尝试的程序终止。有没有办法让程序保持在三次不正确的登录尝试后终止,并且只有在成功登录后才能打开菜单。除此之外,它可以正常工作,谢谢。 – Yaz

+0

好的,修好了!请点击绿色箭头“接受”答案,如果你现在对它感到满意:) – vikingsteve

+0

真棒谢谢你:) – Yaz

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