我正在尝试使用代码int rs=Integer.parseInt(args[0]);
来获取输入,但它会抛出异常ArrayOutOfBondException
。请帮我下面的代码。我需要在命令行参数中只输入一次
package techgig;
import java.util.*;
public class Techgig {
public static int ta[]={1,12,5,111,200,1000,10,9,6,7,4};
public static void main(String[] args) {
Vector v = new Vector();
// TODO code application logic here
System.out.println("Amount Mark has:");
System.out.println("=============================");//here is the code
int rs=Integer.parseInt(args[0]);
// int rs=50;
System.out.print("===============================");
//int a=0;
int count=0;
int min=0,temp,totalamount=0;
System.out.print("\nToys Available:{");
for(int a=0;a<ta.length;a++)
{
if(a!=0)
{
System.out.print(",");
}
System.out.print(ta[a]);
}
System.out.print("}\n");
System.out.println("Buy Maximum toys with maximum left");
for(int i=0;i<ta.length;i++)
{
// System.out.print("\t"+ ta[i]);
for( int j=i+1;j<ta.length;j++)
{
if(ta[j]<ta[i])
{
temp=ta[j];
ta[j]=ta[i];
ta[i]=temp;
}
// System.out.print("\t"+ ta[i]);
}
}
for(int k=0;k<ta.length;k++)
{
totalamount=min;
// System.out.print("\t"+ ta[k]);
min=min+ta[k];
if(min >rs)
{
break;
}
count=count+1;
v.add(ta[k]);
}
int sav=0;
sav=rs-totalamount;
//System.out.println("Amount Mark has:"+rs);
System.out.println("Output:{"+v.size()+","+sav+"}");
System.out.println("Explanation");
System.out.println("Maximum number of toys="+v.size()+""+v);
System.out.println("Saving="+sav);
}
}
答案 0 :(得分:1)
运行java程序时需要传递命令行参数。
如果您没有传递任何命令行参数,则args
将为空数组,即长度为0
。从空数组中访问0
元素将抛出ArrayIndexOutOfBoundsException
。
答案 1 :(得分:0)
让具有主方法的类的名称为MyClass.java
然后您必须从命令行运行程序,如
java MyClass 12
其中12是您传递给程序的命令行参数(您可以尝试使用不同的参数)
注意:当您不通过任何参数但访问程序中的args时,您会看到此异常发起
答案 2 :(得分:0)
如果要使用args[0]
,则需要将命令行参数传递给程序。如果您从IDE运行程序,您将获得例外。