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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 饶正林 中级黑马   /  2013-3-29 12:00  /  1899 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. <blockquote>class chapter6_3
复制代码
为何不让输入数据?请讲讲main()中数组args的知识!


2013-03-29_115501.png (7.59 KB, 下载次数: 14)

2013-03-29_115501.png

点评

如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢  发表于 2013-3-30 08:03

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

5 个回复

倒序浏览
  1. class chapter6_3
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 if(args.length!=1)
  6.                 {
  7.                         System.out.println("请输入一个字符:");
  8.                 }
  9.                 try{
  10.                         int i=Integer.parseInt(args[0]);
  11.                         System.out.println("你输入的数据为"+"i");
  12.                         }
  13.                 catch(NumberFormatException e){
  14.                         System.out.print("数据格式不正确!");
  15.                        
  16.                         }
  17.         }
  18. }
复制代码

评分

参与人数 1技术分 +2 收起 理由
滔哥 + 2

查看全部评分

回复 使用道具 举报
  1. class chapter6_3
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.           //System.out.println(args.length);
  6.                 if(args.length!=1)
  7.                 {
  8.                         System.out.println("请输入一个字符:");
  9.                 }
  10.                 try{
  11.                         int i=Integer.parseInt(args[0]);
  12.                         System.out.println("你输入的数据为"+"i");//这个位置 :System.out.println("你输入的数据为"+i);
  13.                         }
  14.                 catch(NumberFormatException e){
  15.                         System.out.print("数据格式不正确!");
  16.                         
  17.                         }
  18.         }
  19. }
  20. /*
  21. 同学仔细看下错误提示:
  22. 数组越界异常 0,在第十行:  int i=Integer.parseInt(args[0]);
  23. 这是因为你没有传入任何数据,默认的字符数组的长度为零->arg[0]根本不存在
  24. 你可以在上面加上输出语句看一下.
  25. 如果想要传入数据:
  26. 在运行时: java  chapter6_3  "123"  "456"(表示你传入的数据)->使数组长度为2
  27. */
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
简单来说,main方法也是一个方法,其实和普通的方法没什么区别,只是作为程序的入口,仅此而已哦。所以,你这里只是声明了一个String[] args的数组,就像你声明普通的数组一样:int[] arr;但是你这个数组并没初始化,什么值都没有,当然会报空指针异常ArrayIndexOutOfBounds咯,所以,你首先需要对这个args数组进行初始化,才能输入字符(串)。比如你可以在if前加上args = new String[10];或者其他类似的初始化语句。这样你再试试。
另外,你这里并没有定义输入的方法,只是简单的打印了“请输入一个字符:”这个语句。给你一个解决方案:
  1. public static void main(String[] args) {
  2.                 args = new String[10];
  3.                 Scanner in = new Scanner(System.in);
  4.                 if(args.length!=1)
  5.         {
  6.                         System.out.print("请输入一个字符:");
  7.                         args[0] = in.next();
  8.         }
  9.                 try{
  10.                         int i=Integer.parseInt(args[0]);
  11.                         System.out.println("你输入的数据为"+"i");
  12.                 }catch(NumberFormatException e){
  13.                         System.out.println("数据格式不正确!");
  14.                 }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
main()函数,作为主函数,其实就是一个特殊的函数,他可以作为程序的入口,但是main 不是一个关键字,只是一个可以被虚拟机识别的特殊单词。args(全拼arguments)就是一个数组名,可以更改,但是习惯上都是用这个。关于ArrayIndexOutOfBoundsException是由于虚拟机再调用主函数时默认的传入的是
  1. new String[0]
复制代码
, 解决数组越界异常你可以重新创建数组,并定义长度,例如:
  1. args=new String[10]
复制代码

评分

参与人数 1技术分 +2 收起 理由
滔哥 + 2

查看全部评分

回复 使用道具 举报
什么是主函数?
主函数是一个特殊函数,可被JVM调用,作为程序的入口。
主函数各个参数详解?
_public:最高访问权限。
_static:主函数随着类的加载而存在。
_void:没有返回值。
_main:不是关键字,一个特殊的单词,jvm只认他。
_(String[] args):主函数参数,参数类型为字符串数组类型,这个数组里的元素是字符串。
Ps:args只是数组名字,可以任意取,比如图(String[] x)
扩展:
class Demo
{
public static void main(String[] args)
        {
        String [] arr = {"haha","hehe"};       
        Run.main(arr);//等价于DOS命令下:java Demo haha hehe
        }       
}

class Run
{
                public static void main(String[] s)
                {
                        for (int x=0;x<s.length;x++)
                        {
                         System.out.print(s[x]+",")        ;
                        }
                }
}
补充:
1:DOS命令下:java Demo haha hehe 就是向主函数传递字符串参数
2:一个程序可以拥有多个main函数,编译可以通过

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马