这是代码的一部分,我试图让程序显示以字母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);
请帮帮我!谢谢
答案 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开头,不需要为它做算法。