请帮助我理解为什么我的代码不起作用

时间:2014-10-29 13:48:56

标签: java

这个类是一个测试,看看我的2个方法(" endfinder" s)是否正常工作(不幸的是它们不是)。 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();
    }

}

1 个答案:

答案 0 :(得分:0)

你想要这样的东西:

    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比较一个字符''!=''或==''。您应该修改循环以使用上面显示的比较。你还需要做更多的工作。我删除了一些代码,从循环中删除了中断(它们将在不满足条件时自动结束)。如果您有任何疑问,请查看代码。