Java返回数组输出[Ljava.lang.String;@乱码及类型不匹配报错如何解决
问题原因
编译报错的直接原因
你定义的pagingIndex方法返回值类型为String[](字符串数组),但最终return page[currentPage];返回的是数组中单个String类型的元素,二者类型不匹配,因此触发编译报错。
之前返回数组输出[Ljava.lang.String;@xxx的原因
直接打印数组对象时,会默认调用Object类的toString()方法,输出内容为数组类型标识+内存地址,而非数组内的实际存储内容。你旧代码里先初始化了page数组为{page1,page2,page3},随后又用page = new String[currentPage]覆盖了原有内容,返回的是空数组,也是输出地址值的原因之一。
修复方案
根据你的需求(每次返回对应分页的HTML内容直接打印),按以下步骤修改即可:
- 修改方法返回值类型:将方法声明从
public static String[] pagingIndex(int currentPage, int lastPage, String url)
改为
public static String pagingIndex(int currentPage, int lastPage, String url)
- 修正数组下标取值:Java数组下标从0开始,你传入
currentPage=1时对应数组的第0位元素page1,因此将返回语句改为:
return page[currentPage - 1];
否则当currentPage=3时会触发数组越界异常。
修正后完整代码示例
public static String pagingIndex(int currentPage, int lastPage, String url) { String pageHeader = "<li class=\"page-item\"><a class=\"page-link\" href=\""+url; String currentPageHeader = "<li class=\"page-item active\" aria-current=\"page\"><a class=\"page-link\">"; String pageFooter = "</a></li>"; String page1 = currentPageHeader + (currentPage) + pageFooter + pageHeader + (currentPage + 1) +"\">" + (currentPage + 1) + pageFooter + pageHeader + (currentPage + 2) +"\">" + (currentPage + 2) + pageFooter; String page2 = pageHeader + (currentPage - 1) +"\">" + (currentPage - 1) + pageFooter + currentPageHeader + (currentPage) + pageFooter + pageHeader + (currentPage + 1) +"\">" + (currentPage + 1) + pageFooter; String page3 = pageHeader + (currentPage - 2) +"\">" + (currentPage - 2) + pageFooter + pageHeader + (currentPage - 1) +"\">" + (currentPage - 1) + pageFooter + currentPageHeader + (currentPage) + pageFooter; String[] page = {page1, page2, page3}; // 可选增加边界校验,避免传入非法currentPage触发异常 if(currentPage <1 || currentPage>3){ throw new IllegalArgumentException("currentPage仅支持1/2/3"); } return page[currentPage - 1]; }
原有调用逻辑无需修改,运行后即可正常输出对应分页的HTML字符串。
内容的提问来源于stack exchange,提问作者Joshi K
相关产品推荐
相关产品推荐

