在得到答案from this link之后,我尝试制作一个方法,从包含每个人的姓名和年龄的数组列表中返回最旧的成员。
所以在主要方法中我添加了这些行:
cmd.Parameters.AddWithValue("@County", Request.Cookies["il"].Value);
cmd.Parameters.AddWithValue("@type", Request.Cookies["AboneGrubu"].Value);
我创建了以下方法 char X;
X = stat.next().charAt(0);
if(X=='a')
System.out.println(X);
oldest(nameStr, ages);
if(X=='b')
System.out.println(X);
//Scanner newAge = new Scanner(System.in);
//int ageToSearchFor = newAge.nextInt();
//maxAge(ageToSearchFor);
if(X=='c')
System.out.println(X);
:
oldest()
但我得到了同样的结果:
听众
public static void oldest(String[] str, int[] ageInt) { int maxAge=0; String maxName=""; for(int i=1; i<ageInt.length;i++) { int temporary=ageInt[0]; if(ageInt[i]>temporary) { maxAge = ageInt[i]; maxName = str[i]; } } System.out.println("The listener "+maxName+ " is the oldest with an age "+maxAge); }
是年龄最大的<0>
感谢任何帮助。
修改 我改变了if into switch case并仍然存在同样的问题:
答案 0 :(得分:2)
您没有进行正确的比较。请参阅下面的更正评论代码。
public static void oldest(String[] str, int[] ageInt)
{
int maxAge=0;
String maxName="";
for(int i=0; i<ageInt.length;i++) // start from zero
{
if(ageInt[i]>maxAge) // compare to the current max
{
maxAge = ageInt[i];
maxName = str[i];
}
}
System.out.println("The listener "+maxName+ " is the oldest with an age "+maxAge);
}
答案 1 :(得分:1)
更改
if(X=='a')
System.out.println(X);
oldest(nameStr, ages);
到
if(X=='a') {
System.out.println(X);
oldest(nameStr, ages);
}
并且每次时,请用括号围绕if
。
答案 2 :(得分:1)
如果ageInt []的第一个值是最大值,则maxAge和maxName将永远不会更改,因为只有在ageInt [i]的值大于临时值的情况下才会设置这些内容。因此,不要通过以下方式初始化变量。
int maxAge=0;
String maxName="";
将它们初始化为:
int maxAge = ageInt[0];
String maxName = str[0];
此外,请确保您声明
int temporary=ageInt[0];
在for循环之外,否则你将永远设置为ageInt [0]临时,如果说
会产生问题ageInt [0]&lt; ageInt [1]和
ageInt [0]&LT; ageInt [2]&lt; ageInt [1]
因为你的maxAge将通过for循环在其迭代中设置为ageInt [2]。写这个以避免这样的问题的更好方法是检查当前的maxAge而不是临时的。
for(int i=1; i<ageInt.length;i++){
if(ageInt[i]>maxAge){
maxAge = ageInt[i];
maxName = str[i];
}
}