Java或SQL在数组中添加缺少的月份
亲爱的同事们,你好 你能帮我吗?我找不到一个决定。我从MySQL获得的数组如下(数量和月份):Java或SQL在数组中添加缺少的月份,java,mysql,arrays,calendar,missing-data,Java,Mysql,Arrays,Calendar,Missing Data,亲爱的同事们,你好 你能帮我吗?我找不到一个决定。我从MySQL获得的数组如下(数量和月份): [2,07.16,3,08.16,2,10.16,1,11.16,1,12.16,1,01.17] 我需要添加0和在此期间内错过的月份。对于此数组,应在08.16之后添加0和09.16,以便看起来像: [2,07.16,3,08.16,0,09.16,2,10.16,1,11.16,1,12.16,1,01.17] 如有任何建议,我将不胜感激 另外,我试着在Java中做类似的事情: for (int
[2,07.16,3,08.16,2,10.16,1,11.16,1,12.16,1,01.17]
我需要添加0和在此期间内错过的月份。对于此数组,应在08.16之后添加0和09.16,以便看起来像:
[2,07.16,3,08.16,0,09.16,2,10.16,1,11.16,1,12.16,1,01.17]
如有任何建议,我将不胜感激
另外,我试着在Java中做类似的事情:
for (int i = objArrayOfCalulatedRisks.length; i > 3; i = i - 2) {
String dayMonthAndYear = objArrayOfCalulatedRisks[i].toString();
StringBuilder sb = new StringBuilder();
sb.append(dayMonthAndYear.charAt(3));
sb.append(dayMonthAndYear.charAt(4));
String rightMonth = sb.toString();
String dayMonthAndYear2 = objArrayOfCalulatedRisks[i-2].toString();
StringBuilder sb2 = new StringBuilder();
sb2.append(dayMonthAndYear.charAt(3));
sb2.append(dayMonthAndYear.charAt(4));
String leftMonth = sb2.toString();
int rightM = Integer.parseInt(rightMonth);
int leftM = Integer.parseInt(leftMonth);
if (leftM + 1 != rightM) {
}
首先,您应该将输入数组解析为适当的内容,如
NavigabeMap
。然后,您可以计算最低和最高YearMonth
s之间的月份,并填充结果数组
String[] objs = { "2", "07.16", "3", "08.16", "2", "10.16",
"1", "11.16", "1", "12.16", "1", "01.17" };
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM.yy");
NavigableMap<YearMonth, Integer> quantities = new TreeMap<>();
for (int i = 0; i < objs.length; i += 2) {
quantities.put(YearMonth.from(formatter.parse(objs[i + 1])), Integer.valueOf(objs[i]));
}
String[] result;
if (quantities.isEmpty()) {
result = new String[0];
} else {
YearMonth lowest = quantities.firstKey();
YearMonth highest = quantities.lastKey();
int months = (int) ChronoUnit.MONTHS.between(lowest, highest) + 1;
result = new String[months * 2];
for (int i = 0; i < months; i++) {
YearMonth ym = lowest.plusMonths(i);
result[i * 2] = quantities.getOrDefault(ym, 0).toString();
result[i * 2 + 1] = formatter.format(ym);
}
}
System.out.println(Arrays.toString(result));
String[]objs={“2”、“07.16”、“3”、“08.16”、“2”、“10.16”,
"1", "11.16", "1", "12.16", "1", "01.17" };
DateTimeFormatter formatter=模式的DateTimeFormatter.of(“MM.yy”);
NavigableMap数量=新树映射();
对于(int i=0;i
输出: [2,07.16,3,08.16,0,09.16,2,10.16,1,11.16,1,12.16,1,01.17]
如果您正在寻找MySQL解决方案,那么您应该使用。非常感谢!我将使用Java decision,它更适合我的任务。