Java 在字符串中添加数字而忽略其字母
伙计们。。我需要从用户那里获取Java 在字符串中添加数字而忽略其字母,java,Java,伙计们。。我需要从用户那里获取字符串输入,只添加其数值,忽略字母。例如,如果用户输入75Number5,结果应为80或800dadsadasdwwfvv0002,结果应为802。但我总是得到0 import java.util.Scanner; public class NumberAddition { public static void main(String[] args) { Scanner kbd = new Scanner(System.in);
字符串
输入,只添加其数值
,忽略字母
。例如,如果用户输入75Number5
,结果应为80
或800dadsadasdwwfvv0002
,结果应为802
。但我总是得到0
import java.util.Scanner;
public class NumberAddition {
public static void main(String[] args)
{
Scanner kbd = new Scanner(System.in);
System.out.println("Enter any String: ");
String myString = kbd.nextLine();
myString = myString.toLowerCase();
int result = 0;
for(int i = 0; i < myString.length(); i++)
{
if(myString.charAt(i) != '1' || myString.charAt(i) != '2' ||
myString.charAt(i) != '3' || myString.charAt(i) != '4' ||
myString.charAt(i) != '5' || myString.charAt(i) != '6' ||
myString.charAt(i) != '7' || myString.charAt(i) != '8' ||
myString.charAt(i) != '9')
result += 0;
else
result += myString.charAt(i);
}
System.out.println("The result is " + result);
}
}
import java.util.Scanner;
公共类编号条件{
公共静态void main(字符串[]args)
{
扫描仪kbd=新扫描仪(System.in);
System.out.println(“输入任何字符串:”);
字符串myString=kbd.nextLine();
myString=myString.toLowerCase();
int结果=0;
对于(int i=0;i
如果我理解你的问题,那么你可以使用a来构建一个只包含数字的字符串。您可以使用来测试该条件。您还可以使用增强的函数来迭代支持字符串的char数组,如
Scanner kbd = new Scanner(System.in);
System.out.println("Enter any String: ");
String myString = kbd.nextLine();
StringBuilder sb = new StringBuilder();
for (char ch : myString.toLowerCase().toCharArray()) {
if (Character.isDigit(ch)) {
sb.append(ch);
}
}
int result = Integer.parseInt(sb.toString());
System.out.println("The result is " + result);
将输出变量初始化为0
在字符串的长度上循环
使用String.charAt(int索引)获取字符串中的每个字符
使用Character.isDigit(char ch)测试字符是否为数字
如果字符不是数字,则忽略它并继续下一个循环循环
如果字符是数字,则将其转换为int(int i=x-“0”)
将整数添加到步骤#1中的输出变量
循环结束时,返回步骤#1中的输出变量
虽然有一个可接受的答案(并且不难获得OP的期望行为,只需对其进行少量增强),但我想使用正则表达式给出另一种选择:
int i = 0;
for (String s : "asdfa800dadsadasdwwfvv0002".split("\\D+")) {
i += (s.isEmpty() ? 0 : Integer.parseInt(s));
}
System.out.println("result : " + i);
简而言之:使用非数字字符拆分字符串。将拆分结果的每一部分转换为整数并求和
如果您使用的是Java 8,代码可以进一步“简化”为:
旁注-你可能想看看你的逻辑有错误,而不是那里那句巨大的if
语句。在您的if
中,您需要==
或&
。即使这样,你也不会得到你想要的结果,但至少不会是0。似乎答案不是解决OP所要求的问题(我不明白他为什么接受P)。例如,对于输入75Number5
,您的方法将给出755
,而OP正在寻找80
(75+5
),即使要实现您正在做的事情,我也宁愿做一个简单的int result=Integer.parseInt(myString.replaceAll(\\d,“)代码>而不是长for循环。
int sum = Arrays.stream(yourInputString.split("\\D+"))
.filter(s-> !s.isEmpty()).mapToInt(Integer::parseInt).sum();