黑马程序员技术交流社区
标题:
代码我看了好几遍,错误怎么改??
[打印本页]
作者:
刘旭升
时间:
2014-1-1 11:53
标题:
代码我看了好几遍,错误怎么改??
public class Shuzu {
public static void main(String[] args){
int[] arr = new int[]{2,2,2,4,5,7,98,4}; //旧数组;
int[] arr1 = new int[]{2,2,2,2,2,2,2}; //新数组;
boolean flag=true;int index=0; //初始化布尔值和角标值;
for(int i=0;i<arr.length;i++){ //外圈:轮流取得旧数组的值;
for(int j=0;j<arr1.length;j++){ //内圈:比较外圈值在内圈是否存在;
if(arr[i]==arr1[j]){
//如果旧值等于新值,那么就让布尔为false,控制新数组装数打印。
flag=false;
}
}
while(flag){ System.out.print(arr[i]); //新数组装数,仅当旧值不等新值时;
arr1[index]=arr[i];
//if(index==8)
//index=8;//装数
//else index++;
index++;
}
}
for(int n=0;n<index;n++) //遍历,打印。
System.out.print(arr1[n]+" ");
}
}
复制代码
新书组装不重复的旧数组元素、、怎么搞,上面代码有什么问题?流程说下?灰常感谢.感谢你一辈子...
作者:
EricKou
时间:
2014-1-1 14:01
楼主想实现什么功能?出现什么问题说下
作者:
魚淰⑦秒_涐淰⑦
时间:
2014-1-1 15:58
楼主是要实现什么功能都不明确
作者:
静心远行
时间:
2014-1-1 17:08
从代码看,第一个问题是boolean声明的位置错误,应当声明在第一个for循环也就是外层循环内
第二个问题是arr1[index]=arr
,比如当循环到arr[3]=4时,会把arr1[0]赋值成4,也就是arr1[0]=4,当循环到arr[7]=4时,在内层循环中比较时,arr[7]=arr1[0],都等于4,所以flag被赋值成false
解决代码如下:
public static void main(String[] args)
{
int[] arr = {2,2,2,4,5,7,98,4}; //旧数组;
int[] arr1 = {2,2,2,2,2,2,2}; //新数组;
int[] arr2 = new int[arr.length]; //新增数组
int index=0; //初始化布尔值和角标值;
for(int i=0;i<arr.length;i++) //外圈:轮流取得旧数组的值;
{
boolean flag=true;
for(int j=0;j<arr1.length;j++) //内圈:比较外圈值在内圈是否存在;
{
if(arr[i]==arr1[j])
{
flag=false;
break;
}
}
if(flag)
{
System.out.print(arr[i]+" "); //新数组装数,仅当旧值不等新值时;
arr2[index]=arr[i];
index++;
}
}
for(int n=0;n<index;n++) //遍历,打印。
System.out.print(arr2[n]+" ");
复制代码
作者:
杨丽静
时间:
2014-1-2 10:34
public class Shuzu
{
public static void main(String[] args)
{
int[] arr = new int[]{2,98,4};//旧数组;
int[] arr1 = new int[]{2,2}; //新数组;
int[] arr2 = new int[arr1.length+arr.length];
System.out.println(arr[1]);
boolean flag = true;
int index=0; //初始化布尔值和角标值;
for(int i=0;i<arr.length;i++)
{
for(int j=0;j<arr1.length;j++)
{
//内圈:比较外圈值在内圈是否存在;
if(arr[i]==arr1[j])
flag=false;//如果旧值等于新值,那么就让布尔为false,控制新数组装数打印。
else
flag = true;
//System.out.println(flag);
}
if(flag)
{
//System.out.println(arr[i]); //新数组装数,仅当旧值不等新值时;
arr2[index++]=arr[i];
}
}
for(int j=0;j<arr1.length;j++)
{
System.out.println(index);
arr2[index++]=arr1[j];
}
for(int n=0;n<index;n++)//遍历,打印。
System.out.print(arr2[n]+" ");
}
}
作者:
杨丽静
时间:
2014-1-2 10:38
刚才的代码没修改好
public class Shuzu
{
public static void main(String[] args)
{
int[] arr = new int[]{2,98,4};//旧数组;
int[] arr1 = new int[]{2,2}; //新数组;
int[] arr2 = new int[arr1.length+arr.length];
boolean flag = true;
int index=0; //初始化布尔值和角标值;
for(int i=0;i<arr.length;i++)
{
for(int j=0;j<arr1.length;j++)
{
//内圈:比较外圈值在内圈是否存在;
if(arr[i]==arr1[j])
flag=false;//如果旧值等于新值,那么就让布尔为false,控制新数组装数打印。
else
flag = true;
}
if(flag)
{
//新数组装数,仅当旧值不等新值时;
arr2[index++]=arr[i];
}
}
//把arr1的值放到arr2里面
for(int j=0;j<arr1.length;j++)
{
arr2[index++]=arr1[j];
}
for(int n=0;n<index;n++)//遍历,打印。
System.out.print(arr2[n]+" ");
}
}
判断条件应该用if,还有数组长度是固定的,创建好了就不能修改了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2