我试图让我的方法显示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”获得月份无济于事。还有另一种方法可以从字符串表中找到你想要的东西吗?
答案 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);
}
安吉洛