次のプログラムが正しく動作しません。N
文字列内で が検出されるとdursend
、 が使用されます.split
。次に、1
single ごとに a をN
収集2
し、 N の後に one が続く場合は a などを収集Q
します。次に、 の数に0
等しい数の を収集する必要がありますQ
。正しい出力は
次のようになります。011111120111111201111111111111111
最初の出力は0
無視されます。私が得る出力は次のとおりです01111112011111201111111111111110
。したがって0
、最初のプログラムの後に出力した後2
、プログラムがうまくいかないようです。1
1
public class T3 {
public static void main(String[] args)
{
String durs = "NNNNNNNQNNNNNNNQNNNNNNNNNNNNNNNN";
System.out.println(durs);
int d = countOccurrencesDurations(durs, 'N');
int d1 = countOccurrencesDurations(durs, 'Q');
int m = 32;
int[] cdn = new int[m];
int d2;
StringBuffer sb = new StringBuffer(durs);
String dursend = sb.append("W").toString();
String[] a = new String[d];
a = dursend.split("N");
// int alen = a.length + d1 - 1;
// System.out.println("a: " + alen);
int i = 1;
while (i < a.length) {
// System.out.println("N" + a[i]);
d2 = countOccurrencesDurations(a[i], 'Q');
// System.out.println(d2);
int d3 = d2 + 1;
cdn[i] += d3;
for (int j = 0; j < d2; j++) {
i++;
cdn[i] += 0;
}
i++;
}
for (int k = 0; k < m; k++) {
System.out.print(cdn[k]);
}
}
public static int countOccurrencesDurations(String haystack, char needle)
{
int count = 0;
for (int i = 0; i < haystack.length(); i++) {
if (haystack.charAt(i) == needle) {
count++;
}
}
return count;
}
}