有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

计算java中第一个参数的长度

我想打印第一个argument(args[0])的长度,但得到ArrayOutOfBountException

public class Main {
    public static void main(String[] args){
        args[0] = "Hello";
        System.out.println(args[0].length());

    }
}

例外情况:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    at Main.main(Main.java:3)

共 (2) 个答案

  1. # 1 楼答案

    当你写代码的时候

    public class Main {
        public static void main(String[] args){
            args[0] = "Hello";
            System.out.println(args[0].length());
    
        }
    }
    

    此时args[0]="Hello";,如果您的args a字符串数组没有初始化,那么在执行时,我认为您可能以这样的方式使用了命令java Main来执行基本程序

    导致错误的原因是,您没有通过命令行传递任何参数,因此String[] args尚未初始化,它无法将字符串“Hello”存储在数组args[0]中,您正试图打印一个空数组并引发异常

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
        at Main.main(Main.java:3)
    

    更新答案:
    现在是的,您可以在打印之前使用它来验证字符串args的长度

    public class Main {
        public static void main(String[] args){
            if(args.length !=0){
               System.out.println(args[0].length());
            }else{
              args = new String[1]; //Initilize first
              args[0] = "Hello";    //Store value in array element 
              System.out.println(args[0].length()); //Print it.
            }  
        }
    }
    
  2. # 2 楼答案

    这里字符串数组没有任何初始化对象,args有0个元素。这就是为什么建议检查args是否有任何元素。然后,继续进行相应的操作。这就是代码的样子

     public class Main {
    public static void main(String[] args){
        if(args.length !=0){
           // do something
        }else{
          // args doesn't have element.
          return ;
      }  
    }
    }