您好我有一个项目,基本上找到我拥有的所有数字并将它们乘以2.我有90%完成,但对于其他10%某些输入不起作用。
所以我的代码找到用户输入中的所有数字并将它们乘以2。 (例如,123woah变为246woah,woah888变为woah1776) 谁能找到我的错误并向我解释我需要做什么?
编辑:例如,一个不起作用的案例就像1abc1。如果数字位于不同的位置,则代码不起作用。
由于
import java.util.Scanner;
public class MultiplyBy2
{
public static void main(String[] args)
{
int EXIT = 0;
while(EXIT == 0)
{
Scanner kbReader = new Scanner(System.in);
System.out.println("input?");
String String1 = kbReader.nextLine();
if(String1.equalsIgnoreCase("exit"))
{
break;
}
else
{
String String2 = String1;
String1 = String1.replaceAll("\\D", "");
int i = Integer.parseInt(String1);
int j = i * 2 ;
String2 = String2.replaceAll("" + i, "" + j);
System.out.println(String2);
}
}
}
}
答案 0 :(得分:0)
你走了:
String String1="1abc1"; // or woah888
Pattern p = Pattern.compile("-?\\d+");
Matcher m = p.matcher(String1);
while (m.find()) {
Integer temp=Integer.parseInt(m.group());
Integer temp2=temp*2;
String1=String1.replaceFirst(temp.toString(),temp2.toString());
}
System.out.println(String1);
<强> Demo 强>
答案 1 :(得分:0)
你可以试试这个。
String text = "123.0114cc";
String numOnly = text.replaceAll("\\p{Alpha}","");
double numVal = Double.valueOf(numOnly);
double newVal=numVal*2;
text=text.replaceFirst(String.valueOf(numVal),String.valueOf(newVal));
System.out.println(text);
Out put:
246.0228cc