我试图让程序只显示以字母J开头的月份,但我无法得到它,因为它只显示一个月

时间:2017-03-24 08:03:19

标签: java arrays

这是代码的一部分,我试图让程序显示以字母J开头的所有月份 它只显示同一个月三次

String[] jMonths = new String[12];

for(int i = 0; i < months.length; i++) {

    for(int j = 0; j < jMonths.length; j++) {

        if(months[i].charAt(0) == 'J') {
            jMonths[j] = months[i];
        }
    }
}


String message = jMonths[0]+" " + jMonths[5] +" " + jMonths[6];

JOptionPane.showMessageDialog(null, message);

请帮帮我!谢谢

6 个答案:

答案 0 :(得分:0)

  

你正在覆盖不要使用两个for循环一个就足够了并使用   第一个循环中的变量j并将其递增

 String[] jMonths = new String[12];

    for(int i = 0,j=0; i < months.length; i++,j++) {

            if(months[i].charAt(0) == 'J') {
                jMonths[j] = months[i];
            }
        }



    String message = jMonths[0]+" " + jMonths[5] +" " + jMonths[6];

    JOptionPane.showMessageDialog(null, message);

答案 1 :(得分:0)

内部for循环不正确。事实上,你甚至不需要内部for循环,你只需使用StringBuilder,例如:

StringBuilder jMonths = new StringBuilder();

for (int i = 0; i < months.length; i++){
    if (months[i].charAt(0) == 'J'){
        jMonths.append(months[i] + " ");
    }
}

String message = jMonths.toString().trim();

答案 2 :(得分:0)

我猜这个案子可能是你的问题,但很难说清楚这里的信息。 我建议使用:

months[i].toLowerCase().startsWith("j")

而不是:

months[i].charAt(0) == 'J'

您的算法中有很多地方可能出现问题,因此简化它可能会有所帮助。即:

StringBuilder message = new StringBuilder();
        for(String month : jMonths){
            if(month.toLowerCase().startsWith("j")){
                message.append(month+" ");
            }
        }
JOptionPane.showMessageDialog(null, message.toString().trim());

答案 3 :(得分:0)

你不需要内循环

for(int i = 0; i < months.length; i++){
    if(months[i].charAt(0) == 'J') {
        jMonths[i] = months[i];
    }
}

答案 4 :(得分:0)

使用两个循环:

List<String> jMonths = new ArrayList<String> ();
for (int i = 0; i < months.length; i++){
    if (months[i].charAt(0) == 'J' or months[i].charAt(0) == 'j'){
        jMonths.add(months[i]);
    }
}

for (String month : jMonths) System.out.println(month);

答案 5 :(得分:0)

如果我会在那里,我将不会使用任何循环。 我们只需要显示以字母J开头的月份。首先,您定义一个包含所有月份名称的数组,然后搜索以J开头的月份,您不能简单地打印它们。

e.g。 String mons =&#34; January&#34; +&#34; June&#34; +&#34; July&#34 ;;

只有12个月,只有3个以J开头,不需要为它做算法。