提问人:Aleo111 提问时间:4/9/2022 最后编辑:Aleo111 更新时间:4/9/2022 访问量:78
Else 语句不打印,想知道我是否在 java 中错误地从 setter 方法调用
Else statement not printing, wondering if I am calling from setter method incorrectly in java
问:
我正在尝试用 java 制作一个程序来创建一个数组。我正在尝试采用OOP方法。我制作了一个类文件,其中包含一个 setter 方法和我的数组:
public class MenuTestClass{
private int myMonths[];
private double average; //store average value of numbers
private boolean averageCanBeCalculated;
private int max; // store max number from array. to be calculated
public MenuTestClass(){
myMonths = new int[5];
}
public MenuTestClass(int[] myMonths){
this.myMonths = myMonths;
}
public void setMyMonths(int[] values){ //declare setter method
myMonths = values;
}
数组的元素取自我的 main 方法中的用户:
//Menu loop
int myMonths[] = new int[5];
int index = 0;
int num;
while(choice !=6){
switch (choice){
case 1:
int n = 1; //int n = number of projects
Scanner sc = new Scanner(System.in);
System.out.println("How many months was your project?");
for(int i=0; i<1; i++){
int a = sc.nextInt();
//if months is lesser than 2/greater than 12
if((a < 2) || (a > 12)){
System.out.println("Please enter an amount between 2 and 12 months");}
//if months is between 2 and 12 add it to the array
else{myMonths[index++] = a;}
}
calc.setMyMonths(myMonths); //creating the object
break;
我正在尝试创建一个显示数组所有元素的函数。如果数组为空,我希望它显示一条消息,说明这一点。但是,我的 else 语句不会运行。我试图弄清楚为什么会这样,我是否错误地调用了数组?请看下面的代码:
case 2:
if(myMonths.length > 0){
// print the values
for(int i=0; i < myMonths.length; i++){
System.out.println(myMonths[i] + " ");
}
} else {
System.out.println("No values entered");
}
任何帮助都会很棒!提前致谢
答:
0赞
obeid salem
4/9/2022
#1
您的代码 :
for(int i=0; i < myMonths.length; i++){
if(myMonths.length != 0){ //if the array is not empty display all items
System.out.println(myMonths[i] + " ");
}
else{System.out.println("No values entered");} //if array is empty display this message
}
如果那时它会检查长度!myMonths.length > 0
您的代码应为:
if(myMonths.length > 0){
// print the values
for(int i=0; i < myMonths.length; i++){
System.out.println(myMonths[i] + " ");
}
} else {
System.out.println("No values entered");
}
更新:
在创建数组之前 ..向用户询问尺寸, 然后您可以检查是否为空
System.out.println("inter the size:");
Scanner sc = new Scanner(System.in);
int size = sc.nextInt();
int[] arr = new int[size];
if (arr.length > 0) {
// do your loop
System.out.println("Not Empty");
} else {
// Empty array
System.out.println("Empty");
}
评论
0赞
Aleo111
4/9/2022
感谢您的回答!不过它仍然不起作用。你认为这可能是因为我的数组在一个单独的文件中的 setter 方法中吗?
0赞
Aleo111
4/9/2022
public void setMyMonths(int[] values){ //声明 setter method myMonths = values;
0赞
obeid salem
4/9/2022
还行。。您确定您正在感染病例 2 吗?你明白了吗?System.out.println("Choice 2: Display all items");
0赞
Aleo111
4/9/2022
我再次添加它进行检查,是的,它正在运行
0赞
Aleo111
4/9/2022
只是由于某种原因没有执行 else 语句,当我在未向数组输入任何元素后运行它时,它只是打印出几个零
评论
if(myMonths != null)
for(int i=0; i < myMonths.length; i++){ if(myMonths != null){
myMonths
null
i < myMonths.length
i < null.length
null
length
//if the array is not empty display all items
null
else
的意思是 .但是在这种情况下,您的循环甚至不会迭代一次,因为开始时的条件(其中)将被评估为 which 是假的,因此循环将停止。这意味着你不会在“死”内执行代码(它永远不会被执行)。if(myMonths.length != 0)
myMonths.length == 0
for(int i=0; i < myMonths.length; i++)
i < myMonths.length
i=0
0 < 0
if/else
else