-4

嘿,堆栈溢出者,

我已经写了;

public class testing
{
    public String subString(int start, int end) 
    {   
        char[]content = new char[]{0,1,2,3,4,5,6,7,8,9};
        String output ="";
        for (int i = 0; i < content.length;i++)
        {
            if (content[i] >= start && content[i] < end)
            {
                output = output + content[i];
            }
        }
        return output;
    }
    /**
     * @param args
     */

    public static void main(String[] args)
    {

        testing test1 = new testing();

        System.out.println( test1.subString(1,2));
    }

}

返回

[] 

无论我如何尝试拆分它都会以某种方式工作,它将返回正确数量的小方块。我猜是因为我试图将一个数组元素放在一个字符串中?

返回值也必须是字符串。

谁能帮我吗。

PS我知道有这个功能:)

4

5 回答 5

5

它打印的正是您告诉它的内容:开括号、, SOHSTX闭括号。如果您希望它打印[12],您content应该是{'0','1','2'...},并且您的if条件应该是i >= start && i < end

于 2013-09-11T07:25:29.647 回答
2

方块是 ASCII 字符,代码从 0 到 9。我认为您的意思是声明一个int[]数组,而不是一个char[]数组。

做这个:

char[] array = new char[] {'1', '2', '3', '4'};

或者

int[] array = new int[] {1, 2, 3, 4};

你明白了。

这是程序员的缺陷,而不是程序错误。

于 2013-09-11T07:25:39.970 回答
2

您正在尝试打印其值为 1 的 char ( >=1 和 < 2)。查看此 ascii 表以了解您在写什么:

在此处输入图像描述

我相信你想做:

char[]content = new char[]{'0','1','2','3','4','5','6','7','8','9'};

所以你的代码是:

public class testing
{
    public String subString(int start, int end) 
    {   
    char[]content = new char[]{'0','1','2','3','4','5','6','7','8','9'};
        String output ="";
        for (int i = 0; i < content.length;i++)
        {
            if (content[i] >= start && content[i] < end)
            {
                output = output + content[i];
            }
        }
        return output;
    }
    /**
     * @param args
     */

    public static void main(String[] args)
    {

        testing test1 = new testing();

        System.out.println( test1.subString(1,2));
    }

}

返回值为:

1
于 2013-09-11T07:28:15.590 回答
0

据我了解,您在这里有两个不同的问题,第一个是您的字符数组。你有 char[]content = new char[]{0,1,2,3,4,5,6,7,8,9}; 这表示 ascII 值 0-9 可能是;不是你要找的,特别是 char[]content = new char[]{'0','1','2','3','4','5','6','7', '8','9'}; 是你想要的

其次,如果检查您是否在正确范围内的 if 语句根本不正确,您应该检查索引是否在正确范围内而不是值: if (i >= start && i < end)

这些问题将使您的算法发挥作用;但是,对于这个普遍问题,有更好的解决方案;或许你考虑过是否真的需要遍历数组的全部内容?

于 2013-09-11T07:30:51.570 回答
0

内容的初始化可能不会像你想的那样。

char[]content = new char[]{0,1,2,3,4,5,6,7,8,9};

如果您想要的输出是数字(而不是奇怪的 ascii 字符),那么您必须将数组字符初始化为字符,即用撇号将它们如下所示:

char[]content = new char[]{'0','1','2','3','4','5','6','7','8','9'};

您的代码不会产生错误,因为字符的内部表示是数字。

于 2013-09-11T07:37:04.947 回答