令牌上的语法错误“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());
}
}
答
您的代码缺失大括号(这是:{}
顺便说一句)。没关系,如果你的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没有花括号的块只接受每条指令块。另外,一个好的缩进是可读代码的基础,它会避免你这样的麻烦。
这就是为什么我大喊大括号的原因。请尝试使用'{}'来排列它们。你会找到你的答案。 – 2014-10-08 11:09:06
请使用开合花括号{} – 2014-10-08 11:12:28
可能的重复[Syntax error at else,delete this token](http://*.com/questions/17357758/syntax-error-at-else-delete-this-token) – 2014-10-09 06:12:06