我在我的代码中尝试使用else语句,但我总是收到错误。
这是我的代码,我想说其他mode=0
。
public static int mode(int n[])
{
sort(n);
int l[]=new int[n[n.length-1]+1];
int mode = 0;
int j = 0; // to count the number which repeated most
int i=0;
for ( i=0; i < n.length; i++) // for loop to go over all elements
{
l[n[i]]++; // increment the number
if (j < l[n[i]])
j = l[n[i]];
mode = n[i];
else
mode=0;
}
return mode;
}
答案 0 :(得分:4)
在if语句中加上大括号:
if (j < l[n[i]]){
j = l[n[i]];
mode = n[i];
}
没有括号,mode = n[i];
将始终执行
答案 1 :(得分:1)
在这里,试试这个。
public static int mode(int n[])
{
sort(n);
int l[]=new int[n[n.length-1]+1];
int mode = 0;
int j = 0; // to count the number which repeated most
int i=0;
for ( i=0; i < n.length; i++) // for loop to go over all elements
{
l[n[i]]++; // increment the number
if (j < l[n[i]]){
j = l[n[i]];
mode = n[i];}
else
mode=0;
}
return mode;
}
你编译时你的else语句出错的原因是else要求&#34; if&#34;直接在它之前的条款。但是,通过不在if语句周围放置括号,编译器总是执行行&#34; mode = n [i];&#34;因为它在技术上并未包含在if语句中。
基本上,解决方案是为if语句添加括号。如果希望向if语句添加多行代码,而使用/ for循环或else语句,则需要括号。这是一个很好的习惯。
答案 2 :(得分:0)
public static int mode(int n[])
{
sort(n);
int l[]=new int[n[n.length-1]+1];
int mode = 0;
int j = 0; // to count the number which repeated most
int i=0;
for ( i=0; i < n.length; i++) // for loop to go over all elements
{
l[n[i]]++; // increment the number
if (j < l[n[i]])
{ // After this bracket if true
j = l[n[i]];
mode = n[i];
} // to here
else
{ // This is where your else code happens
mode=0;
} // to here
}
return mode;
}
如果我没记错的话,如果你在if之后没有{},那么只会发生第一行。 [不要误解我的意思。] {} s总是一个好主意。
任何时候你有一个if,包括{} s,即使它只是为了清晰度而且只是为了简化将来的编辑。