123だけど、プリシラうpのお礼に1つの修正方法を提示するよ
int[] nChecks = new int[partsFileNames.length]; { から } までの中身を↓に変えて
// パラメーターから各パーツを集計してString配列にセット
HashMap<String, Integer> map = new HashMap<String, Integer>(); Integer cnt; int add = 0;
for(int s = 0; s < args.length; s++) { cnt = map.get(args[s]);
if(null != cnt) { add = cnt.intValue() + 1; } else { add = 1; }
map.put(args[s], new Integer(add)); }
String lines[] = new String[map.size()]; Set keys = map.keySet(); Iterator iKeys = keys.iterator(); int idx = 0;
while(iKeys.hasNext()) { String key = (String)iKeys.next(); lines[idx] = key + " " + map.get(key); idx++; }
boolean conformed = true;
for(int j = 0; j < lines.length; j++) {
String[] words = lines[j].split("\\s+"); boolean newPartsAppeared = true;
for (int i = 0; i < partsSets.size(); i++) {
if (partsSets.get(i).contains(words[0])) { nChecks[i] += Integer.parseInt(words[1]); newPartsAppeared = false; } }
if (newPartsAppeared) { new File(words[0] + ".txt").createNewFile(); conformed = false; } }
if (conformed) { boolean ok = false;
for (int[][] nParts : nPartsInTests) { if (isInRange(nChecks, nParts)) { ok = true; break; } }
if (!ok) { conformed = false; } }
if (conformed) { System.out.println("適合しました"); }
改行は自分で修正してね。