我无法让以下程序正常工作。N
当它在字符串中遇到 an时dursend
,它使用.split
. 然后它1
为每个 single收集 a N
,2
为一个 N 收集 a ,然后是一个Q
,依此类推。然后0
必须收集的数量等于Q
's 的数量。正确的输出应该是:
011111120111111201111111111111111
其中第一个0
应该被忽略。我得到的输出是:01111112011111201111111111111110
,所以似乎0
在第一次打印之后2
程序出错了:它给出了 5 次1
而不是 6 次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;
}
}