import java.util.Scanner;
public class Password
{
public static void main (String [] args)
{
{String [] myArray = new String[10];
int i;
System.out.println("Enter a password: ");
Scanner in = new Scanner(System.in);
String myString = in.next();
//my arrays are here//
myArray[0] = "password";
myArray[1] = "password1";
myArray[2] = "iloveyou";
myArray[3] = "abc123";
myArray[4] = "abc1234";
myArray[5] = "bears55";
myArray[6] = "shelby27";
myArray[7] = "Mjcheer38";
myArray[8] = "sillypineapple";
myArray[9] = "freshvase";
//not sure if this is where this for loop should go//
for (i=0;i<9;i++)
{
if (myString.equals(myArray[i]))
{
System.out.println("Password Accepted");
break;
}
else
{
System.out.println("Password Rejected");
break;
}
//I think my if statements are right....//
}
}
}
}完整的问题是: 6.将程序读入一系列密码到数组中。存储10个密码。创建密码数组后,让读取器输入密码并查看它是否在数组中。如果它在那里,打印“有效密码”,如果不存在,则打印“无效密码”。我不知道我可能做错了什么。对于第一个密码,它说已接受,而其余的则表示拒绝。有人能指出我哪里出了问题吗。我似乎搞不明白。
发布于 2014-11-17 03:29:38
那么,您不希望立即将break从循环中删除;这完全违背了循环的目的。
在for循环的每个可能的执行分支中包含一个break;语句(也就是说,break;不可能不执行)将确保循环主体永远不会多次执行。那就不是什么循环了。
尝试将for循环转换为:
boolean validPassword = true;
for (i=0;i<9;i++) {
if (myString.equals(myArray[i])) {
System.out.println("Invalid password");
validPassword = false;
break;
}
}
if(validPassword) {
System.out.println("Valid password");
}请注意,只有当用户输入的字符串不等于数组中的任何密码时,才需要打印“有效密码”。因此,打印“有效密码”和“无效密码”将不是一个好主意。
https://stackoverflow.com/questions/26965023
复制相似问题