Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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 基于子字符串的方法运行不正常_Java_Substring - Fatal编程技术网

Java 基于子字符串的方法运行不正常

Java 基于子字符串的方法运行不正常,java,substring,Java,Substring,我正在创建一组方法,根据输入字符串显示一行播放板,并将其存储在一个字符串中,稍后我将调用该字符串。我的代码如下: public class A1Program { public void start() { String inputString = "XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO"; int row = 1; int length = inputString.length();

我正在创建一组方法,根据输入字符串显示一行播放板,并将其存储在一个字符串中,稍后我将调用该字符串。我的代码如下:

public class A1Program {

    public void start() {
        String inputString = "XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO";
        int row = 1;
        int length = inputString.length();

    }

    private String extractRow(int row, String inputString) {
        String rowString1 = inputString.substring(row, row + 1);
        String rowString2 = inputString.substring(row + 6, row + 7);
        String rowString3 = inputString.substring(row + 12, row + 13);
        String rowString4 = inputString.substring(row + 18, row + 19);
        String rowString5 = inputString.substring(row + 24, row + 25);
        String rowString6 = inputString.substring(row + 30, row + 31);
        String rowString7 = inputString.substring(row + 36, row + 37);


        return rowString1 + "|" + rowString2 + "|" + rowString3 + "|" + rowString4 + "|" + rowString5
                + "|" + rowString6 + "|" + rowString7 + "|";

    }

    private void displayBoard(String extractRow) {
        System.out.println(extractRow + "-----------");
    }
}

当我运行代码时,不会显示任何内容,但我希望它会显示一行线路板…(extractRow)。

除了代码在行为上没有问题之外,一旦您实际调用它,您应该真正在循环中完成这项工作:

public static void main (String[] args) throws Exception {
  displayBoard(extractRow(0, "XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO"));
}
private static String extractRow(int row, String inputString) {
  final StringBuilder b = new StringBuilder();
  for (int i = 0; i < 37; i+=6) b.append(inputString.charAt(i)).append('|');
  return b.toString();
}
private static void displayBoard(String extractRow) {
  System.out.println(extractRow + "-----------");
}

试试这段代码,它可能会打印出一些东西

public class A1Program {

    public void start() {
        String inputString = "XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO";
        int row = 1;
        int length = inputString.length();
        //check here
        displayBoard(extractRow(row, inputString));

    }

    private String extractRow(int row, String inputString) {
        String rowString1 = inputString.substring(row, row + 1);
        String rowString2 = inputString.substring(row + 6, row + 7);
        String rowString3 = inputString.substring(row + 12, row + 13);
        String rowString4 = inputString.substring(row + 18, row + 19);
        String rowString5 = inputString.substring(row + 24, row + 25);
        String rowString6 = inputString.substring(row + 30, row + 31);
        String rowString7 = inputString.substring(row + 36, row + 37);


        return rowString1 + "|" + rowString2 + "|" + rowString3 + "|" + rowString4 + "|" + rowString5
                + "|" + rowString6 + "|" + rowString7 + "|";

    }

    private void displayBoard(String extractRow) {
        System.out.println(extractRow + "-----------");
    }
}

您从未调用extractRow和displayBoard方法


在start方法中调用这些方法,您的代码将正常工作。

公共类程序{

private String extractRow(int row, String inputString) {
    String rowString1 = inputString.substring(row, row + 1);
    String rowString2 = inputString.substring(row + 6, row + 7);
    String rowString3 = inputString.substring(row + 12, row + 13);
    String rowString4 = inputString.substring(row + 18, row + 19);
    String rowString5 = inputString.substring(row + 24, row + 25);
    String rowString6 = inputString.substring(row + 30, row + 31);
    String rowString7 = inputString.substring(row + 36, row + 37);


    return rowString1 + "|" + rowString2 + "|" + rowString3 + "|" + rowString4 + "|" + rowString5
            + "|" + rowString6 + "|" + rowString7 + "|";

}

private void displayBoard(String extractRow) {
    System.out.println(extractRow + "-----------");
}

public static void main(String args[]){
    A1Program a = new A1Program();
    a.displayBoard(a.extractRow(0, "XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO"));
}
}


尝试此操作,您将看到预期结果

您从未调用
显示板(…)
(或
提取行
)。。。。或任何其他方法。displayBoard似乎忽略了输入字符串的一半,但没有明显的原因。另外,您使用extractRow作为函数名和paramaterI将从最简单的程序开始,该程序显示一些内容并向其中添加一些内容以添加功能。编写大量代码并在以后尝试修复是非常困难的。
private String extractRow(int row, String inputString) {
    String rowString1 = inputString.substring(row, row + 1);
    String rowString2 = inputString.substring(row + 6, row + 7);
    String rowString3 = inputString.substring(row + 12, row + 13);
    String rowString4 = inputString.substring(row + 18, row + 19);
    String rowString5 = inputString.substring(row + 24, row + 25);
    String rowString6 = inputString.substring(row + 30, row + 31);
    String rowString7 = inputString.substring(row + 36, row + 37);


    return rowString1 + "|" + rowString2 + "|" + rowString3 + "|" + rowString4 + "|" + rowString5
            + "|" + rowString6 + "|" + rowString7 + "|";

}

private void displayBoard(String extractRow) {
    System.out.println(extractRow + "-----------");
}

public static void main(String args[]){
    A1Program a = new A1Program();
    a.displayBoard(a.extractRow(0, "XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO"));
}