当我调用加速功能时,我的输出需要567但是我无法得到相同的功能。而不是得到567,“567 Nat”是我无法理解的输出。所以,任何人都可以帮助找到此代码中的问题。
class New {
static void check(String m) {
int flag = 0;
int start = 0;
int end = 0;
char ch[] = m.toCharArray();
for (int i = 0; i < m.length(); i++) {
if (ch[i] == 32) {
flag = 1;
break;
} else end = i;
}
if (flag == 1) {
String s = new String(ch, start, end + 1);
System.out.println(s);
accelerate(m, s, end + 1);
}
}
static void accelerate(String m, String s, int k) {
char ch[] = m.toCharArray();
char ch1[] = s.toCharArray();
int flag = 0;
int start = k;
int end = k;
System.out.println(k);
for (int i = k + 1; i < ch.length; i++) {
if (ch[i] == 32) {
flag = 1;
break;
} else {
end++;
System.out.println(ch[i]);
}
}
if (flag == 1) {
System.out.println(ch);
System.out.println(start);
System.out.println(end);
String s1 = new String(ch, start, end + 1);
System.out.println(s1);
//accelerate(m,s1,end+1);
}
}
public static void main(String... s) {
String k = "India 567 Nation. I LoVe India";
check(k);
}
}
答案 0 :(得分:1)
我认为您误解了带有该参数的String构造函数.From Java Docs
public String(byte[] bytes,
int offset,
int length)
分配一个新的String,其中包含来自子数组的字符 字符数组参数。 offset参数是的索引 子数组的第一个字符和count参数指定 子阵列的长度。子阵列的内容被复制; 后续修改字符数组不会影响 新创建的字符串。
偏移量是要跳过的字符数,而不是字符数组中要开始的索引。
0 1 2 3 4 //array
1 2 3 4 5 //offset skip character starts with one
I n d i a
所以这就是字符串在第一时间打印空间的原因
长度是从偏移开始显示的字符数,而不是字符数组中的结束索引。
那你在做什么
new String(ch,5,9) //starting from space to the i
而你应该做
new String(ch,6,3) //leaving "India " and getting next 3 characters i.e. 567