Java 我总是收到一封“信”;否则不带if“;错误

Java 我总是收到一封“信”;否则不带if“;错误,java,if-statement,conditional-statements,Java,If Statement,Conditional Statements,我正在尝试编写一些代码,让用户输入一个有效的用户名,然后他们尝试了三次。每次编译它时,只要有else-if语句,我就会得到一个没有if的else Scanner in = new Scanner(System.in); String validName = "thomsondw"; System.out.print("Please enter a valid username: "); String input1 = in.next(); if (input1.equa

我正在尝试编写一些代码,让用户输入一个有效的用户名,然后他们尝试了三次。每次编译它时,只要有else-if语句,我就会得到一个没有if的else

  Scanner in = new Scanner(System.in);

  String validName = "thomsondw";

  System.out.print("Please enter a valid username: ");
  String input1 = in.next();

  if (input1.equals(validName))
  {
    System.out.println("Ok you made it through username check");
  }
  else
  {
    String input2 = in.next(); 
  }
  else if (input2.equals(validName))
  {
    System.out.println("Ok you made it through username check");
  }
  else
  {
    String input3 = in.next();
  }
  else if (input3.equals(validName))
  {
    System.out.println("Ok you made it through username check");
  }
  else
  {
    return;
  }

您误解了使用
if-else

if(condition){
  //condition is true here
}else{
  //otherwise
}else if{
  // error cause it could never be reach this condition
}
阅读更多

你可以

if(condition){

}else if (anotherCondition){

}else{
  //otherwise means  'condition' is false and 'anotherCondition' is false too
}

如果有一个
If
后跟一个
else
,则结束该块。您可以在
if
后面加上多个
else-if
语句,但只有一个
else
——并且
else
必须是最后一个。

您需要将除最后一个之外的所有“else”语句更改为“else-if”,或者在以下“else-if”语句之前加上纯“if”:

(一)

(二)


您的代码不是很容易维护。如果用户尝试了5次,你会怎么做?添加一些额外的if块?如果用户有10次尝试呢?:-)你明白我的意思了

请尝试以下操作:

        Scanner in = new Scanner(System.in);
    int tries = 0;
    int maxTries = 3;
    String validName = "thomsondw"; 
    while (tries < maxTries) {
        tries++;
        System.out.print("Please enter a valid username: ");
        String input = in.next();
        if (input.equals(validName)) {
            System.out.println("Ok you made it through username check");
            break; //leaves the while block
        } 
    }
Scanner-in=新的扫描仪(System.in);
int=0;
int max=3;
字符串validName=“thomsondw”;
while(尝试<最大尝试){
尝试++;
System.out.print(“请输入有效用户名:”);
字符串输入=in.next();
if(输入等于(有效名称)){
System.out.println(“好的,您通过用户名检查成功了”);
break;//离开while块
} 
}

如果(条件){}else{}else{}
似乎不正确。第一个
else
处理条件为false的情况,但第二个
else
应该处理什么?如何说一个字符串不等于另一个字符串听起来像是要使用“not”运算符:!。例如,
if(!string1.equals(string2)){…}
else if (input3.equals(validName))
{
    System.out.println("Ok you made it through username check");
}
        Scanner in = new Scanner(System.in);
    int tries = 0;
    int maxTries = 3;
    String validName = "thomsondw"; 
    while (tries < maxTries) {
        tries++;
        System.out.print("Please enter a valid username: ");
        String input = in.next();
        if (input.equals(validName)) {
            System.out.println("Ok you made it through username check");
            break; //leaves the while block
        } 
    }