0

您好,我是 Java 新手,遇到了麻烦。

我的程序在 Jframe 中打印字符串。我生成了一个名为 v 的字符串数组。v[0] 始终为空。我请求用户输入以删除数组 v 的一个位置,我称之为 numberdel。如果我有一个数组

v[0]=[null] v[1]=[hello] v[2]=[my name is] v[3]=[john] and if numberdel=2

最终结果应该是

v[0]=[null] v[1]=[你好] v[2]=[约翰]

我没有成功,所以我创建了一个名为 b 的新数组。但它仍然没有像想要的那样工作......

public static
(...)

String[] b = new String[v.length-1];

boolean jump = false;

for(int j=1; j<b.length; j++){
    if(jump==false){
        if(j != numberdel){
            b[j] = v[j];
        }
        else jump = true;
    }
    else{
        b[j] = v[j+1];
    }
    (...)//action for every cycle
}
(...)
4

3 回答 3

0

当 时j == numberdel,您的循环将设置jumptrue并跳过该else语句。

我建议不要使用该jump变量,因为它基本上是假j < numberdel的,否则是真的。

for(int j = 1; j < b.length; j++)
{
    if (j < numberdel)
        b[j] = v[j];
    else
        b[j] = v[j + 1];
}
于 2013-03-29T18:02:39.250 回答
0

你可以在单个数组本身中完成你的任务......如下......

void delet(int numberdel)
{
     for(int i=numberdel ; i< v.length ;i++)
        v[i] = v[i+1];

}

我建议如果你可以在一个数组中做同样的事情,那么为什么要浪费空间......你做的很好,但我想这更好......希望它对你有用......

于 2013-03-29T18:11:24.363 回答
0

使用System.arrayCopy从数组开始vnumberdel是要删除的从 0 开始的项目。

String[] b = new String[v.length-1];

System.arrayCopy(v, 0, b, 0, numberdel);
System.arrayCopy(v, numberdel + 1, b, numberdel, v.length - numberdel);
于 2013-03-29T18:13:39.607 回答