找到所需条件的方法

时间:2014-04-25 14:56:27

标签: java

我试图让我的方法显示7月份出生的人。

class Personne {
    private String naissance;
    private int nbCafe;

    public Personne(String year, int number) {
        naissance = year;
        nbCafe = number;
    }

    public Personne(String year) {
        naissance = year;
        nbCafe = 1;
    }

    public String getNaissance() {
        return naissance;
    }

    public int getNbcafe() {
        return nbCafe;
    }

    public void afficher(String message) {
        System.out.println(message + ": nee le 16 novembre 1994, consomme 2 tasse(s) de cafe");
    }

    static void afficherTable(Personne[] pers, int amount) {
        System.out.printf("\nContenu du tableau de %d personne(s)\n", amount);
        System.out.printf("nbPers    Birth        numCafe\n");
        for (int i = 0; i < amount; i++)
            System.out.printf(" %d)     %s      %d\n", i, pers[i].getNaissance(), pers[i].getNbcafe());
    }

    static void demo1(Personne[] pers, int amount) {
        int count = 0;

        String juillet = "07";
        for (int i = 0; i < amount; i++)
            if (pers[i].toString().substring(3, 5) == juillet) {
                count++;
            }
        System.out.println(count);
    }
}

public class popo {
    public static void main(String args[]) {

        Personne p1 = new Personne("16/11/1994", 2);
        Personne p2 = new Personne("15/12/1990");

        Personne[] pers = {new Personne("12/10/1991", 3),
                new Personne("15/10/1990", 6),
                new Personne("13/07/1993", 3),
                new Personne("05/06/1991"),
                new Personne("16/12/1992", 3)};
        int nbpers = pers.length;

        p1.afficher("Informations de p1");
        Personne.afficherTable(pers, nbpers);

        Personne.demo1(pers, nbpers);
    }
}

我班上的方法demo1()应该挑选7月出生的人,但似乎没有用。我已经尝试使用charAt / indexOf / substring从“Naissance”获得月份无济于事。还有另一种方法可以从字符串表中找到你想要的东西吗?

5 个答案:

答案 0 :(得分:1)

我会将此添加到Personne类:

public int getMonth(){
     return Integer.parseInt(this.naissance.substring(3,5));
}

然后你可以打电话

If (pers[i].getMonth == 7)

答案 1 :(得分:1)

问题是你正在使用:

pers[i].toString().substring(3, 5) == juillet)

您需要使用

pers[i].getNaissance().substring(3, 5).equals(juillet))

因为你正在寻找来自文艺复兴领域的月份。

您应该使用String.equals(String other)函数来比较字符串,而不是==运算符。

该函数检查字符串的实际内容,==运算符检查对象的引用是否相等。更多信息:Java String.equals versus ==

答案 2 :(得分:0)

static void demo1(Personne[] pers, int amount){
    int count = 0;
    final String juillet = "07";
    for (int i=0; i<amount; i++)
        if (pers[i].naissance.substring(3,5).equals(juillet)) {
            count++;
        }
        System.out.println(count);
   }
}

未覆盖toString方法,您打算使用getNaissance()左右。 另外,使用equals而不是==来比较字符串。 您可以使用amount代替pers.length

答案 3 :(得分:0)

if(pers[i].toString().substring(3,5)== juillet)必须是

if(pers[i].toString().substring(3,5).equals(juillet))

答案 4 :(得分:0)

老实说我会这样做:

static  void demo1(Personne[] pers, int amount) throws ParseException{
int count=0;
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
sdf.setLenient(true);
Calendar c = GregorianCalendar.getInstance();
int juillet=7;
for (int i=0; i<amount;i++)
{

    Date d = sdf.parse(pers[i].getNaissance());
    c.setTime(d);
    int month = c.get(Calendar.MONTH)+1;
    if( month == juillet )
    {
        count++;
    }
}
System.out.println(count);
}

安吉洛