我正在尝试编写一个代码,使用main来询问用户想要的数字,然后用户输入它们。然后在外部方法中,我需要从数组中获取这些数字并找到均匀且大于60的数字。之后,我需要将这两个数字打印回主要数据。这就是我所拥有的:
public class arrayCounter
{//begin class
public static void main(String[]args)
{//begin main method
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.println();
double greaterThan = 0;
double evenNumber = 0;
System.out.println("Please enter the number of intergers you want to put into the array.");
int numbers = input.nextInt();
int[] arrayInt = new int[numbers];
int i = 0;
for (i =0; i < arrayInt.length; i++){//begin for loop
System.out.println("Please enter in those numbers now.");
arrayInt[i] = input.nextInt();
}//end for loop
System.out.println("There are " + greaterThan + " numbers that are greater than 60.");
System.out.println("The even numbers are " + evenNumber + " in the array.");
}//end main
public static double arrayCounter (double greaterThan, double evenNumber){//begins outside method
int i = 0;
int numbers = 0;
int[] arrayInt = new int[numbers];
for (i = 0; i < arrayInt.length; i++){//begins for loop
if(arrayInt[i] <= 60){//begin if loop
greaterThan++;
return greaterThan;
}//end if loop
}//end for loop
if(arrayInt[i] % 2 == 0){//begin if loop
evenNumber++;
return evenNumber;
}//end if loop
return 0;
}//end outside method
}//end class
当我在NetBeans和Putty中编译它时,它编译得很好,但它实际上并没有在答案中给我任何数字,只有0.它会说: “有0.0个大于60的数字。 数组中的偶数为0.0。“
如果没有得到正确的数字,我做错了什么?
答案 0 :(得分:0)
首先,您在arrayCounter中一次返回一个值,这样您就无法获得这两个变量。我想知道你是否认为它使用引用/指针就像C / C ++一样?它没有那样的工作。
而是在类中声明变量,使它们可以作为范围的一部分重用。
public class arrayCounter
{//begin class
double greaterThan = 0.0;
double evenNumber = 0.0;
然后,只需在arrayCounter方法中添加/增加类变量,就像下面所做的那样。
greaterThan++; evenNumber++;
既然您没有尝试返回值,那么让我们删除return语句,输入参数,并将返回类型从double更改为void,如下所示。
public static void arrayCounter () {
最后,在Main中,您需要在到达System.out行之前实际调用您的函数
arrayCounter();
一旦进行了这些更改,您可能需要做一些改进和错误处理,但您几乎就在那里。