将包含减号字符的数组中的所有字符串替换为另一个字符串

时间:2016-03-17 13:15:20

标签: java

我要求用户在控制台中插入数字。 然后,我打印这些数字,但如果任何数字包含“ - ”,它将在括号内转换为相同的数字.. 例如:如果用户插入5 -17 35 -8,输出将为5(-17)35(-8)

我试过的代码:

public class Run {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Please enter numbers");
        String s = input.nextLine();
        String[] split = s.split(" ");

        for (int i = 0; i < split.length; i++) {
            if (split[i].contains("-")) {
                split[i].replace(split[i], "(" + split[i] + ")");
            }
        }

        input.close();
        System.out.println(Arrays.toString(split));
    }
}

但它不起作用,因为它完全按照用户输入的数字打印数字。 例如,5 -17 35 -8而不是5(-17)35(-8)..

我是Java的新手,这就是为什么我无法理解什么是错误的。

3 个答案:

答案 0 :(得分:2)

您正在使用所需格式替换-,但之后不会将其存储回split数组中。

您必须替换以下代码段:

if (split[i].contains("-")) {
    split[i].replace(split[i], "(" + split[i] + ")");
}

以下是更正后的代码段:

if (split[i].contains("-")) {
    /* Change Here */
    split[i] = split[i].replace(split[i], "(" + split[i] + ")");
}

答案 1 :(得分:2)

您不会对替换的字符串执行任何操作。

简单地调用此方法不会直接替换字符串,会返回一个新字符串,您只需忽略它。

split[i].replace

所以你必须这样做

spilt[i] = split[i].replace

答案 2 :(得分:1)

方法replace(...)不会更改您使用的String,但会创建一个包含替换值的新String。

您必须将split[i].replace(split[i], "(" + split[i] + ")");的结果分配回split[i]