编写程序,输人一个字符串(只包含字母和 * 号)删除该字符串中除了尾部以外所有*号。例如,输入的字符串为”*** SSFG ** geD***“,删除后的字符"SSFGIgeD***" 4.编写程序,输人
时间: 2023-07-23 09:09:38 浏览: 67
以下是两个 Java 程序来实现你提出的问题:
1. 删除字符串中除尾部以外的所有 * 号
```java
import java.util.Scanner;
public class RemoveAsterisks {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个字符串(只包含字母和 * 号):");
String str = scanner.nextLine();
// 从字符串末尾开始查找第一个非 * 号字符的位置
int i = str.length() - 1;
while (i >= 0 && str.charAt(i) == '*') {
i--;
}
// 删除除尾部以外的所有 * 号字符
StringBuilder sb = new StringBuilder();
for (int j = 0; j <= i; j++) {
if (str.charAt(j) != '*') {
sb.append(str.charAt(j));
}
}
sb.append(str.substring(i + 1));
System.out.println("删除后的字符串:" + sb.toString());
}
}
```
2. 统计字符串中字母出现的次数
```java
import java.util.Scanner;
public class CountLetters {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个字符串(只包含字母和 * 号):");
String str = scanner.nextLine();
int[] counts = new int[26]; // 统计每个字母出现的次数
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c >= 'a' && c <= 'z') {
counts[c - 'a']++;
} else if (c >= 'A' && c <= 'Z') {
counts[c - 'A']++;
}
}
System.out.println("字母出现的次数:");
for (int i = 0; i < 26; i++) {
if (counts[i] > 0) {
System.out.println((char) ('a' + i) + ":" + counts[i]);
}
}
}
}
```
希望这些程序能够帮到你!
阅读全文