回到一个小广场:s

时间:2013-09-11 07:21:35

标签: java arrays

嘿伙伴堆栈溢出,

我写过;

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));
    }

}

返回

[] 

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

返回也需要是字符串。

任何人都可以帮助我。

P.S我知道有一个功能:)

5 个答案:

答案 0 :(得分:5)

它正好打印出你所说的内容:打开括号,SOH, STX,右括号。如果您希望打印[12],则content应为{'0','1','2'...}if条件应为i >= start && i < end

答案 1 :(得分:2)

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

这样做:

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

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

你明白了。

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

答案 2 :(得分:2)

您正在尝试打印char值,其值为1(&gt; = 1且&lt; 2)。看看这个ascii表来了解你在写什么:

enter image description here

我相信你想这样做:

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

答案 3 :(得分: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&gt; = start&amp;&amp; i&lt;端)

这些问题将使您的算法有效;但是对于这个一般问题有更好的解决方案;也许你想一想你是否真的需要完成数组的全部内容?

答案 4 :(得分: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'};

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