你有一个代表数字波“L”(低)和“H”(高)的字符串。系统会要求它显示使用From<&T>
表示的波形
如下例所示:如果它具有字符串Cow
,则其数字波形为:
您可以看到以下内容:
{ _ , |}
每个“H”或“L”代表“_”或“ - ”和“|”当它改为另一个字母时
答案 0 :(得分:0)
这是一个基本的解决方案:
String wave = "HHHHLLLLHHHHHLLHHLLHH";
wave = wave.replaceAll("(H)(L)|(L)(H)", "$1|$2");//-------------(1)
String low = "";
for (char c : wave.toCharArray()) {
if (c == 'H') {//-------------------------------------------(2)
System.out.print("_ ");
low += " ";
} else {
System.out.print(" ");
low += c;
}
}
System.out.println();//----------------------------------------(3)
for (char c : low.toCharArray()) {
switch (c) {//---------------------------------------------(4)
case 'L':
System.out.print("_");
break;
case '|':
System.out.print("|");
break;
default:
System.out.print(" ");
break;
}
}
这个想法是:
|
或LH
之间设置一个HL
栏L|H
或H|L
H
print _
并将低位变量放到空格中,则打印空格并将字符添加到低位L
打印_
,则|
打印条形图,否则打印空格答案 1 :(得分:0)
在一行中:
void printWave(String highLows) {
String wave = highLows
.replace("HL", "H|L")
.replace("LH", "L|H")
.replace('L', '_')
.replace('H', '-'); // -|_
System.out.println(wave);
}
分两行:
void printWave(String highLows) {
String wave = highLows
.replace("HL", "H|L")
.replace("LH", "L|H")
.replace('L', '_')
.replace('H', '-'); // -|_
String line1 = wave.replaceAll("[^-]", " ").replace('-', '_'); // _
String line2 = wave.replace('-', ' '); // |_
System.out.printf("%s%n%s%n", line1, line2);
}
使用─ ━ ┌ ┐ ┘ └
进行图形处理:
void printWave(String highLows) {
final String HOR_H_OR_L = "\u2501"; // ━
final String HOR_GAP = "\u2501"; // ─
final String H_TO_L1 = "\u2510"; // ┐
final String H_TO_L2 = "\u2514"; // └
final String L_TO_H1 = "\u250C"; // ┌
final String L_TO_H2 = "\u2518"; // ┘
StringBuilder line1 = new StringBuilder();
StringBuilder line2 = new StringBuilder();
char[] chars = highLows.toCharArray();
for (int i = 0; i < chars.length(); ++i) {
char ch = chars[i];
if (ch == 'H') {
line1.append(HOR_H_OR_L);
line2.append(' ');
} else {
line1.append(' ');
line2.append(HOR_H_OR_L);
}
if (i == chars.length - 1 || ch == chars[i + 1]) {
if (ch == 'H') {
line1.append(HOR_GAP);
line2.append(' ');
} else {
line1.append(' ');
line2.append(HOR_GAP);
}
} else {
if (ch == 'H') {
line1.append(H_TO_L1);
line2.append(H_TO_L2);
} else {
line1.append(L_TO_H1);
line2.append(L_TO_H2);
}
}
}
System.out.printf("%s%n%s%n", line1, line2);
}