【发布时间】:2014-03-24 15:59:03
【问题描述】:
我目前正在编写一个小程序,向用户询问 PinCode,如果 Pin 正确则返回“:)”,如果 Pin 错误则返回“:(”。 我的代码由一个 java 文件和一个文本文件组成。
这是代码:
import java.io.*;
import java.util.*;
public class Main {
static public boolean readPinsData(File dataFile, ArrayList<Integer> data) {
boolean err = false;
try {
Scanner scanner = new Scanner(dataFile);
String line;
while (scanner.hasNext()) {
line = scanner.nextLine();
try {
data.add(Integer.parseInt(line));
} catch (NumberFormatException e) {
e.printStackTrace();
err = true;
}
}
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
err = true;
}
return err;
}
public static void main(String[] args) {
System.out.println("-----------------------");
System.out.println("MY APP");
System.out.println("-----------------------");
Console console = System.console();
int pinSize = 0;
int nbTry = 0;
do{
do{
char passwordArray[] = console.readPassword("Enter pin: ");
pinSize = passwordArray.length;
if(pinSize != 4){
System.out.println("Pin must be 4 digits");
} else {
System.out.println("Checking...");
}
ArrayList<Integer> pins = new ArrayList<Integer>();
readPinsData(new File("bdd.txt"), pins);
//System.out.println(pins);
//System.out.println(passwordArray);
String[] thePins = new String[pins.size()];
for (int i = 0; i < thePins.length; i++) {
thePins[i] = pins.get(i).toString();
}
String passEntered = String.valueOf(passwordArray);
for(int i = 0 ; i < thePins.length ; i++){
if(passEntered.equals(thePins[i]) && pinSize == 4){
System.out.println(":)");
} else if(!passEntered.equals(thePins[i]) && pinSize == 4){
nbTry++;
}
}
}while(nbTry < 3);
}while(pinSize != 4);
}
}
这是存储所有好的 Pin 图的 bdd.txt:
1111
2222
3333
4444
5555
6666
7777
8888
9999
实际上我的问题是将尝试次数限制为 3 次。我需要解释一下:
--> 用户必须输入密码
--> 要么他输入一个好的 4 位数密码,然后打印“:)”(应用程序就完成了)
--> 要么他输入了错误的 4 位密码,要么打印出“:(”,并且 nbTry 必须是 ++。 在这种情况下,他只剩下 2 次尝试了
--> 他也可以输入 1 位密码或 2 位密码或 3 位数密码...在这种情况下 nbTry 不受影响,他只需重新输入 4 位数密码。
我不知道如何处理 nbTry 左侧的部分。有什么想法吗?
【问题讨论】:
标签: java loops for-loop while-loop