【发布时间】:2017-02-09 14:09:40
【问题描述】:
问题要求比较字符串是否有连续相同的字母,并将其重写为字母的数字加上字母,例如5A中的AAAAA。但是当我使用 if 语句进行比较时,输出变成了一个很长的数字,而不是想要的结果。
这是问题的一部分: 游程编码是一种简单的压缩方案,当数据集主要由大量重复字符组成时最适合使用。例如,AAAAAAAAAA 是 10 个 A 的运行。我们可以使用 *A10 之类的符号对这个运行进行编码,其中 * 是表示运行的特殊标志字符,A 是运行中的符号,10 是运行的长度。
代码如下:
import java.util.Scanner;
public class RunLengthEncoding {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter input string: ");
String s = input.nextLine();
for (int a = 0; a < s.length(); a++) {
if ((s.charAt(a) < 'A' || s.charAt(a) > 'Z')) {
System.out.print("Bad input");
System.exit(0);
}
}
System.out.print("Enter flag character: ");
char flag = input.nextLine().charAt(0);
if (flag == '#' || flag == '$' || flag == '*' || flag == '&') {
int count = 0;
for (int i = 1; i < s.length(); i++) {
if(s.charAt(i)=s.charAt(i-1));
count++;
if (count == 1)
System.out.print(s.charAt(i));
if (count == 2)
System.out.print(s.charAt(i) + s.charAt(i));
if (count == 3)
System.out.print(s.charAt(i) + s.charAt(i) + s.charAt(i));
else
System.out.print(flag + s.charAt(i) + (count + 1));
}
} else
System.out.print("Bad input");
}
}
【问题讨论】:
-
有一个 ;在你的 if 后面(在 count++ 之前)。那是你的问题吗?编辑:我还建议在 if 语句中始终使用括号。
标签: java if-statement while-loop