令牌上的语法错误“else”,删除这个令牌

问题描述:

我得到语法错误有人可以告诉我什么是错的。令牌上的语法错误“else”,删除这个令牌

控制台文本:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Syntax error on token "else", delete this token 
    at gg.main(gg.java:23) 

代码:

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.ie.InternetExplorerDriver; 


public class gg { 

    public static void main(String[] args) { 


String browser = "Chrome"; 

WebDriver driver = null; 

if(browser.equals("Mozilla")) 
    driver = new FirefoxDriver(); 

else if(browser.equals("Chrome")) 
    System.setProperty("webdriver.chrome.driver", "F:\\chromedriver_win32\\chromedriver.exe"); 
    driver = new ChromeDriver(); 

    else if(browser.equals("IE")) 
     System.setProperty("webdriver.IE.driver", "C:\\Users\\Ryuk~\\Downloads\\IEDriverServer_x64_2.43.0\\IEDriverServer.exe"); 
     driver = new InternetExplorerDriver(); 


    driver.get("https://gmail.com"); 
    System.out.println(driver.getTitle()); 





    } 

} 
+3

这就是为什么我大喊大括号的原因。请尝试使用'{}'来排列它们。你会找到你的答案。 – 2014-10-08 11:09:06

+1

请使用开合花括号{} – 2014-10-08 11:12:28

+0

可能的重复[Syntax error at else,delete this token](http://*.com/questions/17357758/syntax-error-at-else-delete-this-token) – 2014-10-09 06:12:06

您的代码缺失大括号(这是:{}顺便说一句)。没关系,如果你的if语句只涉及一行,但是我建议使用它们来保持可读性。

总体而言,你的代码应该类似于:

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.ie.InternetExplorerDriver; 


public class gg { 

    public static void main(String[] args) 
    { 


    String browser = "Chrome"; 

    WebDriver driver = null; 

    if(browser.equals("Mozilla")) 
    { 
     driver = new FirefoxDriver(); 
    } 
    else 
    { 
     if(browser.equals("Chrome")) 
     { 
      System.setProperty("webdriver.chrome.driver", "F:\\chromedriver_win32\\chromedriver.exe"); 
      driver = new ChromeDriver(); 
     } 
     else 
     { 
      if(browser.equals("IE")) 
      { 
       System.setProperty("webdriver.IE.driver", "C:\\Users\\Ryuk~\\Downloads\\IEDriverServer_x64_2.43.0\\IEDriverServer.exe"); 
       driver = new InternetExplorerDriver(); 
      } 
     } 
     } 
     if(driver !null) 
     { 
     driver.get("https://gmail.com"); 
     System.out.println(driver.getTitle()); 
     } 
    } 
} 

我还加了一小块验证,以检查驾驶员是否不为空(即已经被分配第一),在打印之前。

我也希望你有一个getTitle()的方法,否则可能有问题在那里。


现在,


1)这内应解决您的问题。

2)我(亲自)认为它更容易阅读。

3)我希望你已经在你的代码中学到了{}的重要性。

是的,你忘了封闭的,如果陈述,ELSEIF和其他物品插入括号{}。 我个人更喜欢使用大括号,如果......,即使它只有一个声明。顺便说一句。它使代码更易读太;)

这应该工作:

if(browser.equals("Mozilla")) { 
    driver = new FirefoxDriver(); 
} else if(browser.equals("Chrome")) { 
    System.setProperty("webdriver.chrome.driver", "F:\\chromedriver_win32\\chromedriver.exe"); 
    driver = new ChromeDriver(); 
} else if(browser.equals("IE")) { 
    System.setProperty("webdriver.IE.driver", "C:\\Users\\Ryuk~\\Downloads\\IEDriverServer_x64_2.43.0\\IEDriverServer.exe"); 
    driver = new InternetExplorerDriver(); 
} 

driver.get("https://gmail.com"); 
System.out.println(driver.getTitle()); 

你忘{} 就做了这种方式:

if(browser.equals("Mozilla")) 
    driver = new FirefoxDriver(); 

else if(browser.equals("Chrome")){ 
    System.setProperty("webdriver.chrome.driver", "F:\\chromedriver_win32\\chromedriver.exe"); 
    driver = new ChromeDriver(); 
}else if(browser.equals("IE")){ 
    System.setProperty("webdriver.IE.driver", "C:\\Users\\Ryuk~\\Downloads\\IEDriverServer_x64_2.43.0\\IEDriverServer.exe"); 
    driver = new InternetExplorerDriver(); 
} 
driver.get("https://gmail.com"); 
System.out.println(driver.getTitle()); 

的使用,如果没有{}如果你已经是唯一可能只有一条线,就像你的第一部分

如果else没有花括号的块只接受每条指令块。另外,一个好的缩进是可读代码的基础,它会避免你这样的麻烦。