我目前正在做一项作业,但在运行代码时似乎出现了问题。
public class caesar {
public static void main(String args[]) {
String inputString = args[0];
char inputArray[] = inputString.toCharArray();
int shiftLength = Integer.parseInt(args[1]);
System.out.println("Input: " + inputString);
String outputString = "";
这是我收到的错误:
异常在线程"main"java.lang.ArrayIndexOutOfBoundsExctive: 0在caesar.main(caesar.java: 3)
Tagir的答案解释了如何将参数传递给Java类,我想解释一下异常java.lang.ArrayIndexOutOfBoundsExctive
的意思。
当您试图访问一个不存在的数组中的元素时,就会出现ArrayIndexOutOfBoundsExctive。在您的情况下,您正试图访问第一个元素,但是数组是空的,这就是您获得ArrayIndexOutOfBoundsExctive
的原因。
在按索引访问数组元素之前,请确保该数组的大小至少为索引1。如果索引是n
,那么大小应该是n1
,如果不是,您将得到异常。
您没有向程序传递命令行参数,也没有检查它们是否被传递。要传递参数,请按如下方式启动程序:
java caesar arg0 arg1
例如:
java caesar somestring 10
要在NetBeans 8.0.2 IDE中执行此操作,请打开项目属性,选择运行项,然后在其中指定参数:
您可能还想提前检查传递的参数数量,以输出友好的错误消息。例如:
public static void main(String args[]) {
if(args.length != 2) {
System.err.println("Usage: java caesar <inputString> <shift>");
return;
}
... // the rest of your code
}
问题内容: 我有一个Java应用程序。 该应用程序具有一个设置,该设置决定该应用程序是否在启动时启动。 目前,我可以通过在“启动项目”文件夹中放置/删除快捷方式来实现此目的。 但是,我想知道是否有更好的方法来处理此行为。 编辑 是的,它是Windows。抱歉,之前没有清除该内容。 该应用程序具有一个用户可以在其中触发动作的UI,并且该应用程序在运行时会定期在后台运行一些任务。 @Peter,如何在
我有一份Java申请。 应用程序有一个决定应用程序是否在启动时启动的设置。 目前,我通过在StartUp items文件夹中放置/删除快捷方式实现了这一点。 然而,我想知道是否有更好的方法来处理这种行为。 编辑 是的,是视窗。抱歉之前没有清除。 应用程序有一个UI,用户可以在其中触发操作,并且应用程序在运行时定期在后台运行一些任务。 @Peter,如何使用应用程序中的代码更改注册表?这种方法是否与
我的目标操作系统将是Windows7。 如有任何帮助,不胜感激,谢谢。
问题内容: 我的服务器程序需要在EC2实例启动时启动。即时即时消息只是使用以下命令从我的SSH启动: 我尝试将其添加到.bashrc和/etc/rc.local文件中,但它们仅在我ssh进入时才起作用。 有人知道怎么做,以便在计算机启动时启动我的应用程序实例吗? 谢谢, 本 问题答案: 您可以创建如下脚本: 将您的脚本放在/etc/init.d目录下,然后使用以下命令: 通过使用有关 update
当我的应用程序启动时,将创建一个executor服务(在java.util.concurrent中使用Executors.NewFixedThreadPool(maxThreadNum))对象。当请求到来时,executor服务将创建线程来处理它们。 当应用程序启动时,它将在executorService池中创建200个线程。 只是想知道当应用程序启动时,这是一种正确的创建线程的方法吗?还是有更好
问题内容: 我已经看到许多应用程序将乐器类作为参数并在加载时作为参数,这些应用程序也将a 放到了命令行中。 Java文档说关闭了类验证。 但是,为什么有人要关闭验证,即使他们正在学习类呢? 问题答案: 我会说启动时间。加载类时,验证类是否正确需要花费一些时间。由于类可能以惰性方式加载(不是在应用程序启动时加载,而是在首次使用时加载),因此这可能会导致意外的和不希望的运行时延迟。 实际上,通常不需要