Java 某些带数字的短语不能乘以2

Java 某些带数字的短语不能乘以2,java,string,Java,String,大家好,我有一个项目,基本上可以找到我所有的数字,然后乘以2。我已经完成了90%,但对于其他10%,某些输入不起作用 因此,我的代码在用户输入中找到所有数字,并将它们乘以2。 (例如,123woah变为246woah,woah888变为woah1776) 有人能找到我的错误并向我解释我需要做什么吗 编辑:例如,不起作用的案例类似于1abc1。如果数字位于不同的位置,则代码不起作用 谢谢 import java.util.Scanner; public class Multiply

大家好,我有一个项目,基本上可以找到我所有的数字,然后乘以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);
                }
            }
        }
    }
给你:

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);

您可以试试这个

    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);
输出:

    246.0228cc

例如,一个不起作用的案例是?请列出不起作用的案例。一个明显的例子:“2d2”,它将解析“22”,然后不能用“44”替换“22”在任何地方…您是否尝试调试它并查看发生了什么?然后您必须重新考虑删除字母表并获取结果数字的整个逻辑,因为您当前的代码将始终为11,而不是1和1。那么
1abc1
246woah
以及他们提供的其他测试用例呢