簡體   English   中英

令牌上的語法錯誤,錯放的構造(s)

[英]Syntax error on token(s), misplaced construct(s)

如何修復此錯誤--->令牌上的語法錯誤,錯位的構造(s)錯誤位於下面指定的行。 注意:此代碼已在Web上復制並嘗試將其作為學習工具使用我正在使用Eclipse謝謝!

import java.io.File;
import java.io.FileOutputStream;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class EcellTest22 {
     //Blank workbook
    XSSFWorkbook workbook = new XSSFWorkbook();

    //Create a blank sheet
    XSSFSheet sheet = workbook.createSheet("Employee Data");

    //This data needs to be written (Object[])
    Map<String, Object[]> data = new TreeMap<String, Object[]>();
     //
    data.put("1", new Object[]{"ID","NAME", "LASTNAME"}); <--Syntax error on token(s), misplaced construct(s) 


    data.put("2", new Object[]{1, "Amit", "Shukla"});
    data.put("3", new Object[]{2, "Lokesh", "Gupta"});
    data.put("4", new Object[]{3, "John", "Adwards"});
    data.put("5", new Object[]{4, "Brian", "Schultz"});

    //Iterate over data and write to sheet
    Set<String> keyset = data.keySet();

    int rownum = 0;
    for (String key : keyset) 
    {
        //create a row of excelsheet
        Row row = sheet.createRow(rownum++);

        //get object array of prerticuler key
        Object[] objArr = data.get(key);

        int cellnum = 0;

        for (Object obj : objArr) 
        {
            Cell cell = row.createCell(cellnum++);
            if (obj instanceof String) 
            {
                cell.setCellValue((String) obj);
            }
            else if (obj instanceof Integer) 
            {
                cell.setCellValue((Integer) obj);
            }
        }
    }
    try 
    {
        //Write the workbook in file system
        FileOutputStream out = new FileOutputStream(new File("C:\\Documents and Settings\\admin\\Desktop\\imp data\\howtodoinjava_demo.xlsx"));
        workbook.write(out);
        out.close();
        System.out.println("howtodoinjava_demo.xlsx written successfully on disk.");
    } 
    catch (Exception e)
    {
        e.printStackTrace();
    }

    }

}

您需要將聲明后的所有語句放在代碼塊中,例如方法而不是類塊。 從邏輯上講,將所有語句放在代碼塊中可能是有意義的,但非聲明性語句需要包含在新塊中

private void processFile() {
    data.put("1", new Object[]{"ID","NAME", "LASTNAME"}); // <--Syntax error  
     ...//snip
  } catch (Exception e) {
     e.printStackTrace();
  } 
}

將所有代碼放在main方法中:

public static void main(String[] args) {
        //All of your code goes here

}

語句(不包括聲明)必須在塊內執行。 您似乎正在對某些代碼進行測試,並且這並不是代碼中的實際對象,因此您必須將其放在main方法中。

問題解決了。 我在Eclipse中創建了一個新項目,將POI(jar)添加到庫中,不再顯示語法錯誤。

在任何方法中粘貼try和catch塊 以上問題你的try塊只在類中,這就是為什么你得到語法錯誤消息或深入學習嘗試

public void yourMethod(){    
        try 
         {
           //Write the workbook in file system
           FileOutputStream out = new FileOutputStream(new File("C:\\Documents and Settings\\admin\\Desktop\\imp data\\howtodoinjava_demo.xlsx"));
                    workbook.write(out);
                    out.close();
                    System.out.println("howtodoinjava_demo.xlsx written successfully on disk.");
                } 
                catch (Exception e)
                {
                    e.printStackTrace();
            }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM