Java 为什么字符串在下面的代码中不能正常工作?
我需要567在我的输出,当我调用加速功能,但我不能得到相同的。567 Nat不是567,而是我无法理解的输出。因此,任何人都可以帮助找到这段代码中的问题Java 为什么字符串在下面的代码中不能正常工作?,java,string,Java,String,我需要567在我的输出,当我调用加速功能,但我不能得到相同的。567 Nat不是567,而是我无法理解的输出。因此,任何人都可以帮助找到这段代码中的问题 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++)
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);
}
}我认为您误解了字符串构造函数的参数。来自 分配一个新字符串,该字符串包含 字符数组参数。offset参数是 子数组的第一个字符和count参数指定 子阵列的长度。复制子数组的内容; 对字符数组的后续修改不会影响 新创建的字符串 偏移量是要跳过的字符数,而不是从字符数组开始的索引 这就是为什么字符串首先打印空间 长度是从偏移开始显示的字符数,而不是字符数组的结束索引 那你在干什么
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
Ooo,请缩进以便清晰可见。应该是字符串s=新字符串ch,start,i?end+1有什么问题?/From String javadoc:bytes—要解码为字符偏移量的字节—要解码的第一个字节的索引长度—要解码的字节数—如果您在Eclipse中,您可以通过高亮显示all并按ctrl+i来缩进所有字节
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