2014-10-08 70 views
-6

我得到語法錯誤有人可以告訴我什麼是錯的。令牌上的語法錯誤「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://stackoverflow.com/questions/17357758/syntax-error-at-else-delete-this-token) – 2014-10-09 06:12:06

回答

2

您的代碼缺失大括號(這是:{}順便說一句)。沒關係,如果你的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)我希望你已經在你的代碼中學到了{}的重要性。

0

是的,你忘了封閉的,如果陳述,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()); 
3

你忘{} 就做了這種方式:

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()); 

的使用,如果沒有{}如果你已經是唯一可能只有一條線,就像你的第一部分

0

如果else沒有花括號的塊只接受每條指令塊。另外,一個好的縮進是可讀代碼的基礎,它會避免你這樣的麻煩。

相關問題