Java 返回一个小正方形:s

Java 返回一个小正方形:s,java,arrays,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++) {

嘿,伙计们,烟囱飞越者

我写过

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

}
它在某种程度上起作用,无论我如何尝试和分割,它都将返回正确数量的小正方形。我猜是因为我想把数组元素放在字符串中

返回值也需要是字符串

有人能帮我吗


另外,我知道有一个函数可以实现这一点:)

它正在精确地打印您告诉它的内容:打开括号,关闭括号。如果要打印
[12]
,则
内容应为
{0'、'1'、'2'…}
,而
如果
条件应为
i>=start&i
小正方形是ASCII字符,代码范围为0到9。我想你的意思是声明一个
int[]
数组,而不是
char[]
数组

这样做:

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

你有主意了


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

您试图打印的字符值为1(>=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));
    }

}

据我所知,这里有两个不同的问题,第一个是字符数组。 您有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
这些问题将使您的算法工作;然而,对于这个普遍问题有更好的解决方案;也许您会考虑是否真的需要遍历数组的全部内容?

内容的初始化可能不会按照您的想法进行

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

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

您所说的小正方形是什么意思?不,我指的是小正方形,例如,结果我得到两个小正方形来表示2个numbers字符'1'与int 1不是一回事,因此if条件不会返回true@MadProgrammer除了他使用的是
1
,而不是
'1'
,所以(不可打印的)字符实际上是附加的。他只是没有在屏幕上看到他们。@chrylis正朝着同一个方向跑;)@的确如此。编辑。
1
char[]content = new char[]{0,1,2,3,4,5,6,7,8,9};
char[]content = new char[]{'0','1','2','3','4','5','6','7','8','9'};