函数的输出总是等于初始函数

时间:2016-01-29 13:58:31

标签: java

在得到答案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并仍然存在同样的问题:

3 个答案:

答案 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];
    }
}