Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';在二维数组中找不到项_Java_Arrays_Eclipse_Substring_Multidimensional Array - Fatal编程技术网

Java Can';在二维数组中找不到项

Java Can';在二维数组中找不到项,java,arrays,eclipse,substring,multidimensional-array,Java,Arrays,Eclipse,Substring,Multidimensional Array,我试图制作一个程序,用户输入邮政编码的第一部分,3或4个字符(我知道可以是两个字符,但我可以在以后添加),程序通过一个二维数组并输出与之相关的所有值。我认为我在二维数组中获取邮政编码的子字符串的逻辑是合理的(它是由在前面的代码部分中读入的csv文档形成的)。控制台中出现了一系列错误,我不知道出了什么问题。我只是想在这里发布,看看有没有人能帮我。以下是负责执行此过程的方法代码: public void PostCodeSearch(){ ReadingFromAFile(); St

我试图制作一个程序,用户输入邮政编码的第一部分,3或4个字符(我知道可以是两个字符,但我可以在以后添加),程序通过一个二维数组并输出与之相关的所有值。我认为我在二维数组中获取邮政编码的子字符串的逻辑是合理的(它是由在前面的代码部分中读入的csv文档形成的)。控制台中出现了一系列错误,我不知道出了什么问题。我只是想在这里发布,看看有没有人能帮我。以下是负责执行此过程的方法代码:

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;iif(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");
            }
        }
    }