我对Java很新,但这是我的问题。
我创建了一个数组方法,该方法包含一个10个整数的块,用户将输入该块。它们将在完成时输入-1,但-1将被存储。这是我的代码:
public static int [] inputGrades()
{
Scanner kb = new Scanner (System.in);
int [] iGrades = new int [10];
System.out.print("\nInput test scores, enter -1 when you're finished.\n");
for (int i =0; i<iGrades.length;i++)
{
if (iGrades[i]>=-1)
{
iGrades[i]=kb.nextInt();
break;
}
}
return iGrades;
}
之后,我要创建一个方法,该方法应该计算-1到多少个数值。所以说,用户输入了5个数字和-1,我显示了6.这就是我拥有的数据:
public static int countArrayElements(int[] array)
{
int iCount = 0;
for (int i = 0; i < array.length; i ++)
{
if (array[i] != 0)
{
iCount ++;
}
System.out.print ("\nThere are " + iCount + "numbers in the array.");
}
return iCount;
}
它回来的只有10个。非常感谢正确方向的推动,谢谢。
答案 0 :(得分:0)
将一维数组的每个组件初始化为其默认值。所以对于int它是0,你的方法返回数组的长度。查看specification
答案 1 :(得分:0)
您的两种方法都存在问题,请将它们更改为以下内容:首先初始化数组:
public static int [] inputGrades(){
System.out.print("\nInput test scores, enter -1 when you're finished.\n");
Scanner kb = new Scanner (System.in);
int [] iGrades = new int [10];
for (int i =0; i<iGrades.length;i++){
iGrades[i] = Integer.MIN_VALUE;
}
for (int i =0; i<iGrades.length;i++){
iGrades[i]=kb.nextInt();
if (iGrades[i] ==-1)
break;
}
kb.close(); // Don't forget to close the scanner
return iGrades;
}
public static int countArrayElements(int[] array){
int iCount = 0;
for (int i = 0; i < array.length; i ++)
{
if(array[i] > -1){
iCount++;
}
}
System.out.print ("\nThere are " + iCount + " numbers in the array.");
return iCount;
}
答案 2 :(得分:-1)
可能是你需要使用,if else条件来打破循环..
for (int i =0; i<iGrades.length;i++)
{
if (iGrades[i]==-1)
{
break;
}
else{
iGrades[i]=kb.nextInt();
}
}
这个循环接受10个元素,用户只输入-1它将会中断。
public static int countArrayElements(int[] array)
{
int iCount = 0;
for (int i = 0; i < array.length; i++)
{
if (array[i] != -1)
{
iCount ++;
}
}
System.out.print ("\nThere are " + (iCount+1) + "numbers in the array.");
return iCount;
}
此处(iCount + 1)的打印也是-1。
答案 3 :(得分:-1)
使用ArrayList
public static int inputGrades()
{
Scanner scanner = new Scanner (System.in);
int GRADE_SIZE = 10;
List<Integer> iGrades = new ArrayList<>();
System.out.print("\nInput test scores, enter -1 when you're finished.\n");
for (int idx = 0; idx < GRADE_SIZE; idx++)
{
int inputNum = scanner.nextInt();
iGrades.add(inputNum);
if(inputNum == -1){
break;
}
}
return iGrades.size();
}
主要强>
public static void main(String[] args) {
System.out.println("Grade Size :: "+inputGrades());
}