这是我的代码
import java.util.Scanner;
public class Input {
static class General_Inputs{
static int Num_Of_Ppes;
static int Num_Of_States;
static int Num_Of_Analysis_Years;
static int Number_Decision_Variables;
static int Num_objectives;
static int Num_Constraints;
static int[] Num_Alt_Decision_variable=new int[Number_Decision_Variables];
}
public static double[][] Get_Inputs(){
Scanner State_Vector=new Scanner(System.in);
System.out.println("Enter the number of Decision_Variables");
General_Inputs.Number_Decision_Variables=State_Vector.nextInt();
for(int Num=0;Num<General_Inputs.Number_Decision_Variables;Num++){
System.out.println("Enter the number of Alternatives for Decision Variable "+(Num+1));
General_Inputs.Num_Alt_Decision_variable[Num]=State_Vector.nextInt();
}
State_Vector.close();
return Current_Cond_State_Cof_lngth;
}
public static void main(String args[]){
double[][] input=Input.Get_Inputs();
输入如下所示:输入Decision_Variables数3输入决策变量 1 的备选方案数2这应该进行三次,但它在第一个决策变量处停止并给出以下错误,我不确定问题出在哪里。我知道此错误意味着数组"Num_Alt_Decision_variable"的大小为零,但为什么会这样 我在上面定义了这个数组,我真的尝试了很多搜索,但找不到原因 非常感谢任何帮助,提前感谢。
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at Input.Get_Inputs(Input.java:48)
at Input.main(Input.java:66)
static int Number_Decision_Variables; // this is 0 here
static int Num_objectives;
static int Num_Constraints;
// and it's still 0 here.
static int[] Num_Alt_Decision_variable=new int[Number_Decision_Variables];
Number_Decision_Variables在声明Num_Alt_Decision_variable时为 0。所以你的数组大小为 0,这是一个不可用的数组。我建议您使用非 0 数字初始化它。
在此行之后初始化数组:
General_Inputs.Number_Decision_Variables=State_Vector.nextInt();
获得Number_Decision_Variables变量的实际值后。
顺便说一句,您将需要学习和使用Java命名约定。变量名都应以小写字母开头,而类名应以大写字母开头。
这是我可以解决的答案
import java.util.Scanner;
public class Input {
static class General_Inputs{
static int Num_Of_Ppes;
static int Num_Of_States;
static int Num_Of_Analysis_Years;
static int Number_Decision_Variables;
static int Num_objectives;
static int Num_Constraints;
static int[] Num_Alt_Decision_variable;
}
public static double[][] Get_Inputs(){
Scanner State_Vector=new Scanner(System.in);
System.out.println("Enter the number of Decision_Variables");
General_Inputs.Number_Decision_Variables=State_Vector.nextInt();
General_Inputs.Num_Alt_Decision_variable=new int[General_Inputs.Number_Decision_Variables]
for(int Num=0;Num<General_Inputs.Number_Decision_Variables;Num++){
System.out.println("Enter the number of Alternatives for Decision Variable "+(Num+1));
General_Inputs.Num_Alt_Decision_variable[Num]=State_Vector.nextInt();
}
State_Vector.close();
return Current_Cond_State_Cof_lngth;
}
public static void main(String args[]){
double[][] input=Input.Get_Inputs();