使用args数组时获取OutOfBoundsException

时间:2015-09-26 23:05:58

标签: java

我正在完成作业,我不允许使用扫描仪。相反,我们必须使用int money = Integer.parseInt(args[0])。我尝试编写代码并进行编译,但是出现了运行时错误,我想知道是否有人可以告诉我我做错了什么让我走上正轨!

这是我的代码:

class MakingChange {
  public static void main(String[] args) {
    int money   = Integer.parseInt(args[0]);
    int toonies = (money / 200);
    System.out.println(toonies);
  }
}

错误是

java.lang.ArrayIndexOutOfBoundsException: 0
at Money.main(Money.java:16)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)

我不知道该怎么做这个错误!任何帮助将不胜感激

4 个答案:

答案 0 :(得分:3)

你应该编写防御性代码,试试这个:

  <script type="text/javascript">
                                $(document).ready(function (e) {
                                    $('.search-panel .dropdown-menu').find('a').click(function (e) {
                                        e.preventDefault();
                                        var param = $(this).attr("href").replace("#", "");
                                        var concept = $(this).text();
                                        $('.search-panel span#search_concept').text(concept);
                                        $('[id$=hdnSearchParam]').val(param);
                                        if (param == "date") {
                                            $(function daterange () {
                                                $("#<%= txtsearch.ClientID %>").daterangepicker({
                                                    locale: {
                                                        format: 'DD/MMM/YYYY'
                                                    }
                                                });
                                            });
                                        }
                                        else { //terminate the function }

                                    });
                                });

                                //Re-Create for on page postbacks
                                var prm = Sys.WebForms.PageRequestManager.getInstance();
                                prm.add_endRequest(function daterange() {
                                    $('.search-panel .dropdown-menu').find('a').click(function (e) {
                                        e.preventDefault();
                                        var param = $(this).attr("href").replace("#", "");
                                        var concept = $(this).text();
                                        $('.search-panel span#search_concept').text(concept);
                                        $('[id$=hdnSearchParam]').val(param);
                                        if (param == "date") {
                                            $(function () {
                                                $("#<%= txtsearch.ClientID %>").daterangepicker({
                                                    locale: {
                                                        format: 'DD/MMM/YYYY'
                                                    }
                                                });
                                            });
                                        }
                                        else { //terminate the function }
                                    });
                                });
                            </script>

答案 1 :(得分:2)

问题在于:

int()

您可能正在尝试访问args数组的第一个元素, 但是使用的数组是空的(零项)。

您确定要将任何参数正确传递给您的应用程序吗? 它们应该与程序空间分隔,同时执行编译的程序(这是一个使用jar文件的例子):

int money = Integer.parseInt(args[0]);

您可以添加一些错误处理代码以防止这种情况,例如检查args数组大小的if语句:

java -jar MyProgram.jar 1234

甚至使用try-catch块:

int money = 0;
if(array.size() != 0) {
    money = Integer.parseInt(args[0]);
}

答案 2 :(得分:2)

您没有将任何参数传递给您的程序。

在方法开头添加:

<nav>
  <a href="#"><span>Site title</span></a>
  <a class="news" href="#"><span>Category</span></a>
  <a class="comm" href="#"><span>Category</span></a>
  <a class="variety" href="#"><span>Category</span></a>
  <form class="search">
    <label>
      <input type="text" size="15" placeholder="Search..." />
    </label>
  </form>
</nav>

要传递参数,请执行以下操作:

if (args.length == 0)
    throw new IllegalArgumentException("No arguments found");

答案 3 :(得分:1)

嗯,ArrayIndexOutOfBoundsException表示您正在尝试访问未使用或初始化的内存中的索引。

看起来您正在通过命令行运行程序;您需要将参数传递给已编译的.class文件才能使其运行。