Java ArrayIndexOutOfBoundsException中出错:0
我在Java ArrayIndexOutOfBoundsException中出错:0,java,arrays,runtime-error,indexoutofboundsexception,Java,Arrays,Runtime Error,Indexoutofboundsexception,我在java.lang.ArrayIndexOutOfBoundsException:0中遇到错误,如何避免此错误 package javaapplication1; import java.net.*; import java.io.*; public class Url { public static void main(String[] args) { try { URL url = new URL(args[0]);
java.lang.ArrayIndexOutOfBoundsException:0
中遇到错误,如何避免此错误
package javaapplication1;
import java.net.*;
import java.io.*;
public class Url {
public static void main(String[] args) {
try {
URL url = new URL(args[0]);
System.out.println("URL is " + url.toString());
System.out.println("protocol is "
+ url.getProtocol());
System.out.println("authority is "
+ url.getAuthority());
System.out.println("file name is " + url.getFile());
System.out.println("host is " + url.getHost());
System.out.println("path is " + url.getPath());
System.out.println("port is " + url.getPort());
System.out.println("default port is "
+ url.getDefaultPort());
System.out.println("query is " + url.getQuery());
System.out.println("ref is " + url.getRef());
} catch (IOException e) {
e.printStackTrace();
}
}
}
错误:
您似乎没有将url作为命令行参数传递 尝试运行类似“java Url<此处提供Url>”的程序
e、 g.java Url www.google.com发生此错误的原因是传递给java程序的参数数组没有元素,或者没有向程序传递Arumgin,为避免此错误,请在使用其值之前进行检查
if(args.length > 0) {
// do your task
}
那你的阿明就死定了
public static void main(String[] args) {
if(args.length > 0) {
try {
URL url = new URL(args[0]);
System.out.println("URL is " + url.toString());
System.out.println("protocol is "
+ url.getProtocol());
System.out.println("authority is "
+ url.getAuthority());
System.out.println("file name is " + url.getFile());
System.out.println("host is " + url.getHost());
System.out.println("path is " + url.getPath());
System.out.println("port is " + url.getPort());
System.out.println("default port is "
+ url.getDefaultPort());
System.out.println("query is " + url.getQuery());
System.out.println("ref is " + url.getRef());
} catch (IOException e) {
e.printStackTrace();
}
}
}
问题是您在运行时没有传入参数,因此arg[0]不存在 我会在程序的最开始添加一个检查,以确保实际传入了参数数组 比如:
if(args.length>0) {
//Rest of your code here...
}
要避免此错误,必须在访问此数组的索引0之前检查数组args的长度。 在大多数情况下,最好打印一些使用信息,然后带着特定的错误代码退出
if (args.length != 1)
{
System.err.println("Wrong number of arguments!");
System.err.println("Usage: java javaapplication1.Url <URL>");
int errorcode = -1; // choose an appropriate number here!
System.exit(errorcode);
}
// now you can be sure that the args has exactly one element.
if(args.length!=1)
{
System.err.println(“参数数量错误!”);
System.err.println(“用法:javajavaapplication1.Url”);
int errorcode=-1;//在这里选择一个合适的数字!
系统退出(错误代码);
}
//现在可以确保args只有一个元素。
您必须首先检查args表是否为空。我建议您使用以下内容:
try{
if(args.length > 0){
URL url = new URL(args[0]);
System.out.println("URL is " + url.toString());
System.out.println("protocol is " + url.getProtocol());
System.out.println("authority is " + url.getAuthority());
System.out.println("file name is " + url.getFile());
System.out.println("host is " + url.getHost());
System.out.println("path is " + url.getPath());
System.out.println("port is " + url.getPort());
System.out.println("default port is " + url.getDefaultPort());
System.out.println("query is " + url.getQuery());
System.out.println("ref is " + url.getRef());
}
}
catch (IOException e) {
e.printStackTrace();
}
您是否向应用程序传递任何命令行参数?(即,args[0]正在引发异常,因为数组中没有任何内容)args数组为空…为避免错误,请不要引用不存在的数组元素。希望对此进行否决表决的任何人请留下原因。我觉得否决票很让人迷惑。
try{
if(args.length > 0){
URL url = new URL(args[0]);
System.out.println("URL is " + url.toString());
System.out.println("protocol is " + url.getProtocol());
System.out.println("authority is " + url.getAuthority());
System.out.println("file name is " + url.getFile());
System.out.println("host is " + url.getHost());
System.out.println("path is " + url.getPath());
System.out.println("port is " + url.getPort());
System.out.println("default port is " + url.getDefaultPort());
System.out.println("query is " + url.getQuery());
System.out.println("ref is " + url.getRef());
}
}
catch (IOException e) {
e.printStackTrace();
}