我想创建一个程序来接收用户的输入,例如:'s'表示“ *”,我想将其打印x次。例如,如果用户输入4s,则结果应为****或类似2s4s的内容:******。我尝试使用charAt函数,但无法处理数字...
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
System.out.println("Welcome to image printer program.");
System.out.print("Please enter your sequence:");
String sequence = input.nextLine();
char b = ' ';
int s = 's';
char n = '\n';
for (int a = 0; a <= sequence.length() - 1; a++) {
char c = sequence.charAt(a);
if (c == 's') {
System.out.print("*");
}
}
}
答案 0 :(得分:0)
直接为您提供答案似乎很愚蠢,所以我可以给您一种解决方法的想法。
问题陈述
因此,您定义的语法为<count>s<count>s...
。这意味着对于每个s
,应该有一个<count>
。
步骤1 -获取计数。
您以s1s2s3s4
之类的字符串开头。您split that string上的字母s
会给您:
["1","2","3","4"]
第2步-总计这些计数。
您想找出总共有多少颗星,这是所有计数的总和。您需要将这些数字加在一起。
1 + 2 + 3 + 4 = 10
第3步-打印星星。
我猜你可以看到从这里去的地方。
答案 1 :(得分:0)
使用Character.isDigit和Character.isLetter方法:
int count = 0;
boolean isLetter = false;
String symbol = "*";
String s = input.next();
for (int i = 0; i < s.length(); i++) {
char character = s.charAt(i);
if (Character.isDigit(character)) {
count = Character.getNumericValue(character);
} else if (Character.isLetter(character)) {
isLetter = true;
}
if (count != 0 && isLetter) {
for (int j = 0; j < count; j++) {
System.out.print(symbol);
}
count = 0;
isLetter = false;
}
}