Java 函数值总是乘以2

Java 函数值总是乘以2,java,function,Java,Function,我在我的类中创建了一个函数“m7”,但是这个函数总是返回值乘以2。 如果我在“psvm”中运行此函数,它将打印正确的值。 在我的Alice类中,方法m7()返回10,这是不正确的,但如果我在psvm中运行此方法,则返回5,这是正确的 package com.math.functions; import java.util.*; public class Alice { Integer[] rank= new Integer[7]; Integer n=65;

我在我的类中创建了一个函数“m7”,但是这个函数总是返回值乘以2。 如果我在“psvm”中运行此函数,它将打印正确的值。 在我的Alice类中,方法m7()返回10,这是不正确的,但如果我在psvm中运行此方法,则返回5,这是正确的

    package com.math.functions;

import java.util.*;

public class Alice {
    Integer[] rank= new Integer[7];
    Integer n=65;
    int count=0;
    public Alice() {
        rank[0]=100;
        rank[1]=100;
        rank[2]=90;
        rank[3]=80;
        rank[4]=75;
        rank[5]=60;
        rank[6]=n;
        //rank[6]=20;
        //rank[7]=10;
        //rank[8]=n;
        Arrays.sort(rank, Collections.reverseOrder());
    }
    public void print() {

        for (Integer a : rank) {
            System.out.println(a);
        }
    }
    public int m7() {
        for (int i = 0; i < rank.length; i++) {
            if (rank[i] == n) {
                break;
            }
            count++;
        }
        return count;
    }
    public void res(){
        int s = m7();
        System.out.println("this is the value of s here :"+s);
        Set<Integer> hash_Set = new HashSet<>();
        for(int i=0;i<=s/2;i++){
            System.out.println("hii");
            hash_Set.add(rank[i]);
        }
        for(Integer o:hash_Set){
            System.out.println(o);
            System.out.println("rank:"+hash_Set.size());
        }
    }

    public static void main(String[] args) {
        Alice a=new Alice();
        a.print();
        System.out.println("this is: "+a.m7());
        a.res();
    }
}
package com.math.functions;
导入java.util.*;
公共课爱丽丝{
整数[]秩=新整数[7];
整数n=65;
整数计数=0;
公众谘询委员会(){
秩[0]=100;
排名[1]=100;
秩[2]=90;
排名[3]=80;
排名[4]=75;
排名[5]=60;
秩[6]=n;
//排名[6]=20;
//排名[7]=10;
//秩[8]=n;
sort(rank,Collections.reverseOrder());
}
公开作废印刷品(){
for(整数a:秩){
系统输出打印项次(a);
}
}
公共int m7(){
for(int i=0;i对于(int i=0;i您正在重用上次运行时的
count

不要将
count
声明为成员变量,将其设置为局部变量

public int m7() {
    int count = 0; // HERE
    for (int i = 0; i < rank.length; i++) {
        if (rank[i] == n) {
            break;
        }
        count++;
    }
    return count;
}
public int m7(){
int count=0;//此处
for(int i=0;i
您正在重用上次运行时的
count

不要将
count
声明为成员变量,将其设置为局部变量

public int m7() {
    int count = 0; // HERE
    for (int i = 0; i < rank.length; i++) {
        if (rank[i] == n) {
            break;
        }
        count++;
    }
    return count;
}
public int m7(){
int count=0;//此处
for(int i=0;i
另外:帮你自己(和你想读代码的其他人)一个忙,给你方法(和变量等)合理的名称。
m7对于没有上下文的人来说基本上没有意义。你很幸运,你的示例值也是:帮你自己(和你想读代码的其他人)一个忙,给你方法(和变量等)合理的名称。
m7
对于没有上下文的人来说基本上没有意义。你很幸运,你的示例值都是