Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java或SQL在数组中添加缺少的月份_Java_Mysql_Arrays_Calendar_Missing Data - Fatal编程技术网

Java或SQL在数组中添加缺少的月份

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

亲爱的同事们,你好

你能帮我吗?我找不到一个决定。我从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 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,它更适合我的任务。