嘿伙伴堆栈溢出,
我写过;
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我知道有一个功能:)
答案 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表来了解你在写什么:
我相信你想这样做:
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'};
您的代码不会产生错误,因为字符的内部表示是数字。