Java Can';在二维数组中找不到项
我试图制作一个程序,用户输入邮政编码的第一部分,3或4个字符(我知道可以是两个字符,但我可以在以后添加),程序通过一个二维数组并输出与之相关的所有值。我认为我在二维数组中获取邮政编码的子字符串的逻辑是合理的(它是由在前面的代码部分中读入的csv文档形成的)。控制台中出现了一系列错误,我不知道出了什么问题。我只是想在这里发布,看看有没有人能帮我。以下是负责执行此过程的方法代码:Java Can';在二维数组中找不到项,java,arrays,eclipse,substring,multidimensional-array,Java,Arrays,Eclipse,Substring,Multidimensional Array,我试图制作一个程序,用户输入邮政编码的第一部分,3或4个字符(我知道可以是两个字符,但我可以在以后添加),程序通过一个二维数组并输出与之相关的所有值。我认为我在二维数组中获取邮政编码的子字符串的逻辑是合理的(它是由在前面的代码部分中读入的csv文档形成的)。控制台中出现了一系列错误,我不知道出了什么问题。我只是想在这里发布,看看有没有人能帮我。以下是负责执行此过程的方法代码: public void PostCodeSearch(){ ReadingFromAFile(); St
public void PostCodeSearch(){
ReadingFromAFile();
String StrPstCd = PstCd.getText();
for (int x = 0; x < twod.length; x++) {
if (StrPstCd.length() == 3){
String PstCdSub = twod[x][3].substring(0,2);
if (StrPstCd.equals(PstCdSub)) {
text.append("Price = " + twod[x][1] + " " + "Date of Sale: " + twod[x][2] + " " + "Postcode: " + twod[x][3] + "\n");
}
}else if(StrPstCd.length() == 4){
String PstCdSub = twod[x][3].substring(0,3);
if(StrPstCd.equals(PstCdSub)){
text.append("Price = " + twod[x][1] + " " + "Date of Sale: " + twod[x][2] + " " + "Postcode: " + twod[x][3] + "\n");
}// end if
}
}// end for
}
public void PostCodeSearch(){
读取fromafile();
字符串StrPstCd=PstCd.getText();
对于(int x=0;x
在看不到其余代码的情况下进行最佳猜测。
假设twod是一个二维字符串数组,d0是sale数组索引,d1是虚构的枚举{UNKNOWN,PRICE,DATE,POSTNUMBER}
public void PostCodeSearch() {
ReadingFromAFile();
String StrPstCd = PstCd.getText();
for (int i = 0; i < twod.length; i++) {
for (int x = 0; x < twod[i][3].length; x++) {
if (StrPstCd.length == 3 && twod[i][3].length <= x + 3) {
String PstCdSub = twod[i][3].substring(x, x + 3);
if (StrPstCd.equals(PstCdSub)) {
text.append("Price = " + twod[i][1] + " " + "Date of Sale: " + twod[i][2] + " " + "Postcode: " + twod[i][3] + "\n");
}
}
else if(StrPstCd.length == 4 && twod[i][3].length <= x + 4) {
String PstCdSub = twod[i][3].substring(x, x + 4);
if (StrPstCd.equals(PstCdSub)) {
text.append("Price = " + twod[i][1] + " " + "Date of Sale: " + twod[i][2] + " " + "Postcode: " + twod[i][3] + "\n");
}
}
}
}
}
public void PostCodeSearch(){
读取fromafile();
字符串StrPstCd=PstCd.getText();
for(int i=0;i if(StrPstCd.length==3&&twod[i][3].length控制台有什么错误?线程“AWT-EventQueue-0”java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:ExampleGUI的java.lang.String.substring(未知源代码)为3。ExampleGUI的PostCodeSearch(ExampleGUI.java:117)为ExampleGUI.actionPerformed(ExampleGUI.java:76)java.awt.Component.dispatchEventImpl(未知源)java.awt.Component.dispatchEventImpl(未知源)java.awt.Component.dispatchEvent(未知源)java.awt.EventQueue.dispatchEventImpl(未知源)java.awt.EventQueue.dispatchEventImpl(未知源)java.awt.EventQueue.access$200(未知源)java.awt.EventQueue$3.run(未知源)java.awt.EventQueue$3.run(未知源)java.security.AccessController.doPrivileged(本机方法)java.security.ProtectionDomain$1.doIntersectionPrivilege(未知源)java.awt.EventQueue$4.run(未知源)位于java.awt.EventQueue$4.run(未知源)位于java.security.AccessController.doPrivileged(本机方法)位于java.security.ProtectionDomain$1.doIntersectionPrivilege(未知源)位于java.awt.EventQueue.dispatchEvent(未知源)位于java.awt.EventDispatchThread.pumpOneEventForFilters(未知源)java.awt.EventDispatchThread.PumpeEventsForFilter(未知源)java.awt.EventDispatchThread.PumpeEventsForHierarchy(未知源)java.awt.EventDispatchThread.PumpeEvents(未知源)java.awt.EventDispatchThread.run(未知源)java.awt.EventDispatchThread.PumpeEvents(未知源)谢谢,下次编辑初始帖子比在评论中发布更容易。要查看的重要部分是线程“AWT-EventQueue-0”中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:3
,它告诉我们它正在尝试访问字符“3”处的字符串,但该字符串没有那么多字符。我现在晚上不在计算机上,所以我将在上午尝试此操作,并让您知道我的进展:)
import static java.util.regex.*;
public void PostCodeSearch() {
ReadingFromAFile();
String StrPstCd = PstCd.getText();
Pattern pattern = Pattern.compile("^\\S*" + StrPstCd + "\\S*$");
for(int i = 0; i<twod.length; ++i) {
Matcher matcher = pattern.matcher(twod[i][3]);
if (matcher.matches()) {
text.append("Price = " + twod[i][1] + " " + "Date of Sale: " + twod[i][2] + " " + "Postcode: " + twod[i][3] + "\n");
}
}
}