问题描述
这是我的原始代码
int n1=nextInt();
String ch=next().split("");
int n2=nextInt().split("");
如果我想获得输入行5A11
(在同一行)。我应该怎么做才能获得这样的输入。是否可以在java中获得这样的输入
解决方法
将输入作为字符串读取。然后使用下面的代码从字符串中删除字符,然后对整数求和。
String str = "123ABC4";
int sum = str.replaceAll("[\\D]","")
.chars()
.map(Character::getNumericValue)
.sum();
System.out.println(sum);
,
您可以使用 String#split
。
int[] parseInput(String input) {
final String[] tokens = input.split("A"); // split the string on letter A
final int[] numbers = new int[tokens.length]; // create a new array to store the numbers
for (int i = 0; i < tokens.length; i++) { // iterate over the index of the tokens
numbers[i] = Integer.parseInt(tokens[i]); // set each element to the parsed integer
}
return numbers;
}
现在您可以将其用作
int[] numbers;
numbers = parseInput("5A11");
System.out.println(Arrays.toString(numbers)); // output: [5,11]
numbers = parseInput("123A456");
System.out.println(Arrays.toString(numbers)); // output: [123,456]
,
String input = "123C567";
String[] tokens = input.split("[A-Z]");
int first = Integer.parseInt(tokens[0]);
int second = Integer.parseInt(tokens[1]);