用户使用 来输入字符串Scanner。输入出现在一行中,例如:"Привет" + 5。
任务:连续多次向控制台打印“Hello”一词,具体取决于加号后面出现的数字。
例如,我们输入:“Hello”+3
输出:“你好你好”
我假设你需要创建一个数组,使用将字符串划分为数组的arrString[]方法,你会得到一个数组,并使用for循环输出数组的第一个元素3次。.Split("+")["Привет", 3]
Scanner scanner = new Scanner(System.in);
System.out.println("Введите строку: ");
String str = scanner.nextLine;
System.out.println(inputStr(str));
String [] arrString;
public static String inputStr(String str1){
StringBuilder sb = new StringBuilder();
for (int i=0; i<str1.lenght; i++){
ArrString.sb.toString().Split("+");
}
for (i=0; i<arrString[1]; i++){
sb.append(arrString[0]);
}
}
使用“+”我将字符串分成一个包含两个元素的数组。数组的第二个元素是一个数字。
问题:如何将数组的第二个元素放入循环中for以重复数组的第一个元素,重复数组的第二个元素中指示的次数?*/
问题中提出的代码完全不起作用- 它无法编译不仅因为数字与字符串的比较
i<arrString[1],而且还包含许多其他错误:main,arrString在某个不清楚的地方声明 - 最有可能是在两种方法之间scanner.nextLine()inputStr第一个循环没有意义,应该简单地替换为调用该方法split获取字符串数组'+'当您在方法中按字符拆分字符串时,String::split(String regex)需要在正则表达式中转义该字符。+您需要使用静态方法Integer.parseInt(String str)或来从输入字符串中提取符号后的重复次数Integer.valueOf(String str),但是这些方法对输入字符串的格式“敏感”。iinputStr不返回任何内容,尽管根据其声明它应该返回一个字符串话虽如此,
inputStr应该重写该方法以将字符串复制n一次并根据逻辑重命名。然而,有一个更简单的解决方案,无需显式循环
for。由于该类已用于读取数据
Scanner,因此可以通过在调用时指定分隔符来进一步配置useDelimiter。然后可以使用 获得第一行
Scanner::next,并使用 获得所需的重复次数Scanner::nextInt。还应该注意的是,要重复一行指定的次数,
for不需要循环,因为 Java 11 添加了String::repeat(int count)实现此功能的方法。话虽如此,修正后的解决方案可能如下所示:
或者甚至作为“一行”而不突出显示各个变量
input和n:扫描仪中的分隔符是:
\\+\\s*- 转义字符+后跟 0 个或多个空白字符\\s\\s*\\R- 换行符\R前面有0个或多个空白字符\\s