我正在尝试找到数组最小数量的索引。我的代码在下面,由于某种原因索引保持打印值9。
public static void main (String args [])
{
int [] numbers = new int [10];
//10 data inputs from user
int smNum = numbers[0];
int index = 0;
for(int i = 0; i < numbers.length; i++)
{
if (numbers[i] < smNum)
smNum = numbers[i];
index = i;
}
System.out.println("\nThe smallest number in the array is: "+smNum+"\nThe index of this number is: "+ index);
}
}
提前致谢。
答案 0 :(得分:0)
这不是我的意思。
没有花括号的if
块仅评估单个后面的表达式。换句话说
if (numbers[i] < smNum)
smNum = numbers[i];
index = i;
相当于
if (numbers[i] < smNum) {
smNum = numbers[i];
}
index = i;
很明显,index = i;
将始终被评估。
如果你想在if
块中执行多个语句,你必须用大括号包装这些语句。
if (numbers[i] < smNum) {
smNum = numbers[i];
index = i;
}
答案 1 :(得分:0)
将大括号添加到if块
int smNum = numbers[0];
int index = 0;
for(int i = 0; i < numbers.length; i++)
{
if (numbers[i] < smNum){
smNum = numbers[i];
index = i;
}
}
System.out.println("\nThe smallest number in the array is: "+smNum+"\nThe index of this number is: "+ index);
应该解决问题。如果一个块(如if子句有多行),则需要将它们用大括号括起来。如果它只有一行,则不需要括号。