Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.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 - Fatal编程技术网

Java 请帮助我理解为什么我的代码不';行不通

Java 请帮助我理解为什么我的代码不';行不通,java,Java,这个类是一个测试,看看我的两个方法(endfinder)是否正常工作(不幸的是,它们不正常)。endfinder()用于返回所提供字符串中下一个非空格字符的索引;endfinder2()用于返回以endfinder找到的索引开头的单词的端点。它们用于从由空格分隔的多个单词组成的字符串中提取单词。我已经研究了几个小时,肯定有一些明显的答案,但我觉得我正在慢慢疯掉 我已经删除了所有用于测试代码的输出,多次尝试找出问题所在,以使代码更干净 基本上,我发现endfinder()由于某种原因总是返回0,e

这个类是一个测试,看看我的两个方法(endfinder)是否正常工作(不幸的是,它们不正常)。endfinder()用于返回所提供字符串中下一个非空格字符的索引;endfinder2()用于返回以endfinder找到的索引开头的单词的端点。它们用于从由空格分隔的多个单词组成的字符串中提取单词。我已经研究了几个小时,肯定有一些明显的答案,但我觉得我正在慢慢疯掉

我已经删除了所有用于测试代码的输出,多次尝试找出问题所在,以使代码更干净

基本上,我发现endfinder()由于某种原因总是返回0,endfinder2()一直运行到到达断点(我假设在我添加它之前,它总是无限循环,所以会发生这种情况)

我想要的结果是start=3,end=6,这将使它输出“[one]”

我得到的结果是:

[一二三]开始=0,结束=17

这是我的密码:

import java.io.*;
import java.util.*;

public class test {

    static String answer, container;
    static int start = 0, end = 1;  

    public static int endfinder(String perspective) {
        int holder = start;
        while (perspective.substring(holder, (holder + 1)) == " ") {
            holder++;
            if (holder == perspective.length())
                break;
        }
        return holder;
    }

    public static int endfinder2(String perspective) {
        int holder = end;
        while (perspective.substring(holder, (holder + 1)) != " ") {    
            holder++;
            if (holder == perspective.length())
                break;
        }
        return holder;
    }

    public static void main(String Args[]) {
        System.out.println();
        System.out.println();
        container = "   one  two three";
        start = endfinder(container);
        end = start + 1;
        end = endfinder2(container);
        System.out.println("[" + container.substring(start, end) + "]");
        System.out.println();
        System.out.println("start: [" + start + "] end: [" + end + "]");
        System.out.println();
    }

}

你想要这样的东西:

    static String answer, container;
    static int start = 0, end = 1;  

    public static int endfinder(String perspective) {
        int holder = start;
        while (perspective.charAt(holder) == ' ') {
            holder++;
        }
        return holder;
    }

    public static int endfinder2(String perspective) {
        int holder = end;
        while (perspective.charAt(holder) != ' ') {    
            holder++;
        }
        return holder;
    }

    public static void main(String Args[]) {
        System.out.println();
        System.out.println();
        container = "   one  two three";
        start = endfinder(container);
        end = start + 1;
        end = endfinder2(container);
        System.out.println("[" + container.substring(start, end) + "]");
        System.out.println();
        System.out.println("start: [" + start + "] end: [" + end + "]");
        System.out.println();
}

您也应该使用charAt来比较字符“”或==''。您应该修改循环以使用上面所示的比较。你还做了超出需要的额外工作。我去掉了一些代码,从循环中删除了中断(当条件不满足时,它们将自动结束)。如果您有问题,请直接查看代码。

顺便说一句,伙计,有两个提示。首先,您应该将类命名为
Test
(而不是“Test”),并且应该尽量避免在
静态环境中工作。为什么不使用
main
方法的第一行:
Test Test=new Test()
@syminic看看我的答案这就是你想要的。