A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

ヤ木瞳つ

注册黑马

  • 黑马币:0

  • 帖子:6

  • 精华:0

本帖最后由 ヤ木瞳つ 于 2012-7-13 23:41 编辑

:call:大家伙们:注意了!我本想利用Arrayl类的方法在下边的程序中直接复制数组args,生成一个新的数组a,可咋不能用呢,在命令行里编译粗错,为啥?
public class TestArgs
{
        public static void main(String[] args)
        {
                /*
                int[] a = new int[args.length];
                //把args数组中的元素赋值给a数组中的元素
                for (int i = 0; i < args.length ; i++ )
                {
                        a = Integer.parseInt(args);
                }
                */
                //复制args数组生成一个新的数组a
                int[] a =  Arrays.copyOf(args, args.length);
                print(a);
        }
        private static void print(int[] a)
        {
                for (int i = 0 ; i < a.length ; i++ )
                {
                        System.out.print(a+"  ");
                }
               
        }
}
//---------------------------------------------------------------------------------------------------------------------
/*
编译出现错误:
TestArgs.java:20: 找不到符号
符号: 变量 Arrays
位置: 类 TestArgs
                int[] a = Arrays.copyOf(args, args.length);
                          ^
1 错误
*/

9 个回复

倒序浏览
int[] a =  Arrays.copyOf(args, args.length);--------------- int[] a换成Object[] a试试,
回复 使用道具 举报
本帖最后由 朱东方 于 2012-7-13 13:47 编辑

import java.util.*;
public class TestArgs
{
         public static void main(String[] args)    //args是字符串类型的数组
         {
                 /*
                 int[] a = new int[args.length];
                 //把args数组中的元素赋值给a数组中的元素
                 for (int i = 0; i < args.length ; i++ )
                 {
                         a = Integer.parseInt(args);
                 }
                 */
                 //复制args数组生成一个新的数组a
                 String[] a =  Arrays.copyOf(args, args.length);  //复制类型得一样的吧,你定义的是int,而args是字符串类型的。怎么能复制。
                 print(a);
         }
         private static void print(String[] a)   //打印也得是字符串类型的吧
         {
                 for (int i = 0 ; i < a.length ; i++ )
                 {
                         System.out.print(a+"  ");
                 }
                 
        }
}
回复 使用道具 举报
  1. import java.util.*;
  2. public class TestArgs
  3. {
  4.           public static void main(String[] args)    //args是字符串类型的数组。
  5.           {
  6.                   /*
  7.                   int[] a = new int[args.length];
  8.                   //把args数组中的元素赋值给a数组中的元素
  9.                   for (int i = 0; i < args.length ; i++ )
  10.                   {
  11.                           a = Integer.parseInt(args);
  12.                   }
  13.                   */
  14.                   //复制args数组生成一个新的数组a
  15.                   String[] a =  Arrays.copyOf(args, args.length);  //复制类型得一样的吧,你定义的是int,而args是字符串类型的。怎么能复制。
  16.                   print(a);
  17.           }
  18.           private static void print(String[] a)   //打印也得是字符串类型的吧。
  19.           {
  20.                   for (int i = 0 ; i < a.length ; i++ )
  21.                   {
  22.                           System.out.print(a+"  ");
  23.                   }
  24.                   
  25.          }
  26. }
复制代码
回复 使用道具 举报
本帖最后由 陈冲 于 2012-7-13 13:55 编辑
  1. import java.util.Arrays;//1
  2. public class TestArgs
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 /*
  7.                 int[] a = new int[args.length];
  8.                 //把args数组中的元素赋值给a数组中的元素
  9.                 for (int i = 0; i < args.length ; i++ )
  10.                 {
  11.                         a = Integer.parseInt(args);
  12.                 }
  13.                 */
  14.                 //复制args数组生成一个新的数组a
  15.                 String[] a =  Arrays.copyOf(args, args.length);//2args是String[]类型的,你定义的数组a是int类型,这里不能复制,需要修改
  16.                 print(a);
  17.         }
  18.         private static void print(String[] a)//同上,这里也要修改
  19.         {
  20.                 for (int i = 0 ; i < a.length ; i++ )
  21.                 {
  22.                         System.out.print(a+"  ");
  23.                 }
  24.                
  25.         }
  26. }
复制代码
1.这里需要加上import java.util.Arrays;
否则
编译出现错误:
TestArgs.java:20: 找不到符号
符号: 变量 Arrays
位置: 类 TestArgs
                int[] a = Arrays.copyOf(args, args.length);
2.如果不修改,会出现这样的错误
TestArgs.java:15: 错误: 不兼容的类型
                int[] a =  Arrays.copyOf(args, args.length);
                                        ^
  需要: int[]
  找到:    String[]
1 个错误

评分

参与人数 1技术分 +1 收起 理由
黑马张扬 + 1 赞一个!

查看全部评分

回复 使用道具 举报
首先,楼主的问题是没有导入所需要的jar包,java.util.*;
另外,由于传入main函数的数组类型是String类型,所以你的int型引用a无法接收复制的String类型数组,相应的int型数组都要改为String,在下面的代码中都改过了。
关于main函数的args中传入的值需要在用java命令运行时自行传值,之后打印才有效果。因为默认的args数组长度是0,不含元素。

测试的命令:
java TestArgs ha he hei
  1. import java.util.*;

  2. public class TestArgs
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                
  7.         /*        int[] a = new int[args.length];
  8.                 //把args数组中的元素赋值给a数组中的元素
  9.                 for (int i = 0; i < args.length ; i++ )
  10.                 {
  11.                         a[i] = Integer.parseInt(args[i]);
  12.                 }
  13.                 */
  14.                 //复制args数组生成一个新的数组a
  15.                 String[] a =  Arrays.copyOf(args, args.length);
  16.                 print(a);
  17.         }
  18.         private static void print(String[] a)
  19.         {
  20.                 for (int i = 0 ; i < a.length ; i++ )
  21.                 {
  22.                         System.out.print(a[i]+"  ");
  23.                 }
  24.                
  25.         }
  26. }
复制代码
回复 使用道具 举报
我上面的那段代码有两处错误
{:soso_e157:}{:soso_e113:}非常感谢大家对李波同志的热情帮助
回复 使用道具 举报
王飞 中级黑马 2012-7-13 14:46:42
8#
1,--------------------首先你没有导入包   import java.util.Arrays;

public class TestArgs
{
        public static void main(String[] args)
        {
                /*
                int[] a = new int[args.length];
                //把args数组中的元素赋值给a数组中的元素
                for (int i = 0; i < args.length ; i++ )
                {
                        a[i] = Integer.parseInt(args[i]);
                }
                */
                //复制args数组生成一个新的数组a
                int[] a =  Arrays.copyOf(args, args.length);              2,-----------------------》》》你这里:args是String类型的,而你要用int类型指向String类型的不可以啊
                                                                                         应该改为: String[] a =  Arrays.copyOf(args, args.length);
                print(a);                                                                                          
        }                                                                                                            
        private static void print(int[] a)                                      因为在上面已经把int[]改成了String[] ,所以这里的int[]也要改为String[]                                       
        {
                for (int i = 0 ; i < a.length ; i++ )
                {
                        System.out.print(a[i]+"  ");
                }
               
        }
}



楼主如果用的是Eclipse,因为运行时是没有输入参数的,所以要在Run As下面的Run Configurations里面配置运行时传入的参数

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
{:soso_e121:}还是要感谢楼上的小飞的解答,问题已经解决了,辛苦大家了!!,
回复 使用道具 举报
陈冲 发表于 2012-7-13 13:52
1.这里需要加上import java.util.Arrays;
否则
编译出现错误:

你是不能够将String类型的数组赋给int类型数组的,类型不兼容
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马