我如何将char数组的值移动到同一个char数组?这是一个代码:
假设ctr_r1 = 1,
for(int ctr_x = (ctr_r1 + 2) ; ctr_x < letters.length - 2 ; ctr_x++)
{
letters[ctr_x] = letters[ctr_x];
}
sb.append(letters);
char[] lettersr1 = sb.toString().toCharArray();
sb1.append(lettersr1);
追加&#34;字母&#34;,然后将其转换为字符串,然后将其转换为字符数组,然后将其设为&#34; lettersr1&#34;值。
我试图完成的是给出了EUCHARIST这个词,我需要取出HARIST这个词并将它放在另一个数组上并称之为区域1(Porter2词干算法)。
代码&#34; ctr_X =(ctr_r1 + 2)&#34;从H开始直到T.问题是我无法直接传递值,这就是为什么我试图更新现有的char数组然后追加它。
我试过这样做:
char[] lettersr1 = null;
for(int ctr_x = (ctr_r1 + 2) ; ctr_x < letters.length - 2 ; ctr_x++)
{
lettersr1[ctr_x] = letters[ctr_x];
}
sb.append(lettersr1);
但是当我这样做时我的应用程序崩溃了。请帮忙。谢谢!
答案 0 :(得分:2)
我不明白你要做什么,但我可以对你的代码发表评论:
letters[ctr_x] = letters[ctr_x];
这是一个noop:它将数组元素值设置为它已有的值。
char[] lettersr1 = null;
for(int ctr_x = (ctr_r1 + 2) ; ctr_x < letters.length - 2 ; ctr_x++) {
lettersr1[ctr_x] = letters[ctr_x];
这显然会导致NullPointerException,因为您正在尝试访问一个null的数组。您必须先初始化数组才能修改它:
char[] lettersr1 = new char[someLength];
附加说明:您应该为变量选择更好的名称。名称应该告诉变量代表什么,并且它们应该遵守Java命名约定(变量名称中没有下划线,camelCase)。 ctr_x
,ctr_r1
和lettersr1
并不意味着什么。
编辑:
我仍然不确定你想做什么,以及你为什么不简单地使用substring()
,但这里是如何将EUCHARIST转换为HARIST:
char[] eucharist = "EUCHARIST".toCharArray();
char[] harist = new char[6];
System.arraycopy(eucharist, 3, harist, 0, 6);
String haristAsString = new String(harist);
System.out.println(haristAsString);
// or
char[] harist2 = new char[6];
for (int i = 0; i < 6; i++) {
harist2[i] = eucharist[i + 3];
}
String harist2AsString = new String(harist2);
System.out.println(harist2AsString);
// or
String harist3AsString = "EUCHARIST".substring(3);
char[] harist3 = harist3AsString.toCharArray();
System.out.println(harist3AsString);