Netbeans java程序重复一个文本文件而不是注销选项
我正在为一个java初学者班做我的项目。该程序是针对动物园的身份验证程序。我的程序运行良好,除了一件事。用户名和密码经过身份验证后,应该显示一个文件,上面写着“hello zoo keeper…”,然后要求用户注销。我的问题是,在它显示正确的文本文件后,它不会要求注销。它将文本文件再重复两次 例如: 喂,动物园管理员 作为动物园管理员,您可以访问所有动物的信息和 他们的日常监控日志。这可以让你追踪它们的进食情况 习惯、栖息地条件和一般福利 喂,动物园管理员 作为动物园管理员,您可以访问所有动物的信息和 他们的日常监控日志。这可以让你追踪它们的进食情况 习惯、栖息地条件和一般福利 喂,动物园管理员 作为动物园管理员,您可以访问所有动物的信息和 他们的日常监控日志。这可以让你追踪它们的进食情况 习惯、栖息地条件和一般福利 生成成功(总时间:15秒) 我会把我的代码放在下面,并对我能得到的任何帮助表示感谢Netbeans java程序重复一个文本文件而不是注销选项,netbeans,Netbeans,我正在为一个java初学者班做我的项目。该程序是针对动物园的身份验证程序。我的程序运行良好,除了一件事。用户名和密码经过身份验证后,应该显示一个文件,上面写着“hello zoo keeper…”,然后要求用户注销。我的问题是,在它显示正确的文本文件后,它不会要求注销。它将文本文件再重复两次 例如: 喂,动物园管理员 作为动物园管理员,您可以访问所有动物的信息和 他们的日常监控日志。这可以让你追踪它们的进食情况 习惯、栖息地条件和一般福利 喂,动物园管理员 作为动物园管理员,您可以访问所有动物的
package AuthenticationSystem;
//import necessary java tools
import java.io.FileInputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.security.MessageDigest;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class Authenticationsystem {
public static void main(String[] args) throws Exception {
Scanner scnr = new Scanner(System.in);
// fileinput reading txt iles
FileInputStream fis = null;
InputStreamReader isr = null;
BufferedReader br = null;
String txtline = "";
//credentials elements
final int NUM_ELEMENTS = 6;
String[] storedUsername = new String[NUM_ELEMENTS];
String[] role = new String[NUM_ELEMENTS];
String[] hashPassword = new String[NUM_ELEMENTS];
String username = "";
String password = "";
String hash = "";
int i = 0;
int j = 0;
int user = 0;
boolean verified = false;
// user / pw array
storedUsername[i] = "griffin.keyes";
hashPassword[i] = "108de81c31bf9c622f76876b74e9285f";
++i;
storedUsername[i] = "rosario.dawson";
hashPassword[i] = "3e34baa4ee2ff767af8c120a496742b5";
++i;
storedUsername[i] = "bernie.gorilla";
hashPassword[i] = "a584efafa8f9ea7fe5cf18442f32b07b";
++i;
storedUsername[i] = "donald.monkey";
hashPassword[i] = "17b1b7d8a706696ed220bc414f729ad3";
++i;
storedUsername[i] = "jerome.grizzlybear";
hashPassword[i] = "3adea92111e6307f8f2aae4721e77900";
++i;
storedUsername[i] = "bruce.grizzlybear";
hashPassword[i] = "0d107d09f5bbe40cade3de5c71e9e9b7";
++i;
//dialog box entry
JOptionPane.showMessageDialog(null, "All entries are case sensitive.\n"
+ "Enter \"quit\" at any time to exit.", "Authentication System", JOptionPane.PLAIN_MESSAGE);
// enter username / password
username = (String) JOptionPane.showInputDialog(null, "Enter username: ", "Authentication System", JOptionPane.PLAIN_MESSAGE);
if (username.equals("quit")) {
JOptionPane.showMessageDialog(null, "You have chosen to exit. Goodbye.", "Authentication System", JOptionPane.WARNING_MESSAGE);
return;
}
password = (String) JOptionPane.showInputDialog(null, "Enter password: ", "Authentication System", JOptionPane.PLAIN_MESSAGE);
if (password.equals("quit")) {
JOptionPane.showMessageDialog(null, "You have chosen to exit. Goodbye.", "Authentication System", JOptionPane.WARNING_MESSAGE);
return;
}
//exit after three checks
for (i = 0; i < 3; ++i) {
// check user credentials
for (j = 0; j < NUM_ELEMENTS; ++j) {
if (username.equals(storedUsername[j])) {
String original = password; // md5digest
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(original.getBytes());
byte[] digest = md.digest();
StringBuilder sb = new StringBuilder();
for (byte b : digest) {
sb.append(String.format("%02x", b & 0xff));
}
verified = true;
user = j;
hash = sb.toString();
}
}
//if wrong entry, re-enter
if (!hash.equals(hashPassword[user])) {
verified = false;
if (i < 2) {
JOptionPane.showMessageDialog(null, "Invalid user credentials. " + (2 - i)
+ " attempt(s) remaining.", "Authentication System", JOptionPane.PLAIN_MESSAGE);
username = (String) JOptionPane.showInputDialog(null, "Enter username: ", "Authentication System",
JOptionPane.PLAIN_MESSAGE);
if (username.equals("quit")) {
JOptionPane.showMessageDialog(null, "You have chosen to exit. Goodbye.", "Authentication System",
JOptionPane.WARNING_MESSAGE);
break;
}
password = (String) JOptionPane.showInputDialog(null, "Enter password: ", "Authentication System",
JOptionPane.PLAIN_MESSAGE);
if (password.equals("quit")) {
JOptionPane.showMessageDialog(null, "You have chosen to exit. Goodbye.", "Authentication System",
JOptionPane.WARNING_MESSAGE);
break;
}
}
//closes program if tries exceed 3
if ((!verified) && (i == 2)) {
JOptionPane.showMessageDialog(null, "Could not verify credentials. Goodbye.", "Authentication System",
JOptionPane.ERROR_MESSAGE);
break;
}
} // if user credentials work
else {
//get input from txt files
// user if zookeeper
if (username.equals(storedUsername[0]) || username.equals(storedUsername[3])) {
fis = new FileInputStream("src\\AuthenticationSystem\\zookeeper.txt");
isr = new InputStreamReader(fis);
br = new BufferedReader(isr);
while ((txtline = br.readLine()) != null) {
System.out.println(txtline);
}
} //user is a veternarian
else if (username.equals(storedUsername[2]) || username.equals(storedUsername[4])) {
fis = new FileInputStream("src\\AuthenticationSystem\\veterinarian.txt");
isr = new InputStreamReader(fis);
br = new BufferedReader(isr);
while ((txtline = br.readLine()) != null) {
System.out.println(txtline);
}
} //user is an admin
else {
fis = new FileInputStream("src\\AuthenticationSystem\\admin.txt");
isr = new InputStreamReader(fis);
br = new BufferedReader(isr);
while ((txtline = br.readLine()) != null) {
System.out.println(txtline);
}
}
System.out.println();
class logout {
public void logout(String original) throws Exception {
int i = 0;
Scanner input = new Scanner(System.in);
while (i == 0) {
System.out.println("To log out please press 1 then the enter key");
int result = input.nextInt();
if (result == 1) {
System.out.println("You have logged out. Have a great day!");
i = 1;
} else {
System.out.println("You are still logged in.");
}
}
}
}
}
}
}
包认证系统;
//导入必要的java工具
导入java.io.FileInputStream;
导入java.io.BufferedReader;
导入java.io.InputStreamReader;
导入java.security.MessageDigest;
导入java.util.Scanner;
导入javax.swing.JOptionPane;
公共类认证系统{
公共静态void main(字符串[]args)引发异常{
扫描仪scnr=新扫描仪(System.in);
//文件输入读取txt文件
FileInputStream fis=null;
InputStreamReader isr=null;
BufferedReader br=null;
字符串txtline=“”;
//凭证元素
最终int NUM_元素=6;
String[]storedUsername=新字符串[NUM_元素];
String[]角色=新字符串[NUM_元素];
String[]hashPassword=新字符串[NUM_元素];
字符串username=“”;
字符串密码=”;
字符串哈希=”;
int i=0;
int j=0;
int user=0;
布尔验证=假;
//用户/pw阵列
storedUsername[i]=“格里芬·凯斯”;
hashPassword[i]=“108DE81C31BF9C622F7687B74E9285F”;
++一,;
storedUsername[i]=“rosario.dawson”;
hashPassword[i]=“3e34baa4ee2ff767af8c120a496742b5”;
++一,;
storedUsername[i]=“伯尼大猩猩”;
hashPassword[i]=“a584efafa8f9ea7fe5cf18442f32b07b”;
++一,;
storedUsername[i]=“donald.monkey”;
hashPassword[i]=“17B1B7D8A7066966ED220BC414F729AD3”;
++一,;
storedUsername[i]=“jerome.grizzlybear”;
hashPassword[i]=“3adea92111e6307f8f2aae4721e77900”;
++一,;
storedUsername[i]=“bruce.grizzlybear”;
hashPassword[i]=“0d107d09f5bbe40cade3de5c71e9e9b7”;
++一,;
//对话框条目
JOptionPane.showMessageDialog(null,“所有条目都区分大小写。\n”
+“随时输入\“退出\”退出。”,“身份验证系统”,JOptionPane.PLAIN_消息);
//输入用户名/密码
用户名=(字符串)JOptionPane.showInputDialog(null,“输入用户名:”,“身份验证系统”,JOptionPane.PLAIN\u消息);
if(username.equals(“退出”)){
showMessageDialog(null,“您已选择退出。再见”,“身份验证系统”,JOptionPane.WARNING_消息);
返回;
}
password=(字符串)JOptionPane.showInputDialog(null,“输入密码:”,“身份验证系统”,JOptionPane.PLAIN_消息);
if(password.equals(“退出”)){
showMessageDialog(null,“您已选择退出。再见”,“身份验证系统”,JOptionPane.WARNING_消息);
返回;
}
//三次检查后退出
对于(i=0;i<3;++i){
//检查用户凭据
对于(j=0;j// user / pw array
storedUsername[i] = "griffin.keyes";
hashPassword[i] = "108de81c31bf9c622f76876b74e9285f";
++i;
storedUsername[i] = "rosario.dawson";
hashPassword[i] = "3e34baa4ee2ff767af8c120a496742b5";
++i;
storedUsername[i] = "bernie.gorilla";
hashPassword[i] = "a584efafa8f9ea7fe5cf18442f32b07b";
++i;
storedUsername[i] = "donald.monkey";
hashPassword[i] = "17b1b7d8a706696ed220bc414f729ad3";
++i;
storedUsername[i] = "jerome.grizzlybear";
hashPassword[i] = "3adea92111e6307f8f2aae4721e77900";
++i;
storedUsername[i] = "bruce.grizzlybear";
hashPassword[i] = "0d107d09f5bbe40cade3de5c71e9e9b7";
++i;
//exit after three checks]
for (i = 0; i < 3; ++i) {
// check user credentials
for (j = 0; j < NUM_ELEMENTS; ++j) {
if (username.equals(storedUsername[j])) {