簡體   English   中英

將包含負號字符的數組中的所有字符串替換為另一個字符串

[英]Replace all strings in array that contain minus character with another string

我要求用戶在控制台中插入數字。 然后,我打印這些數字,但是如果任何數字包含“-”,它將在括號內轉換為相同的數字。例如:如果用戶插入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的新手,所以這就是為什么我不明白問題所在。

您將-替換為所需的格式,但是沒有將其重新存儲在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] + ")");
}

您對替換的字符串不做任何事情。

只需調用此方法就不會直接替換字符串,它會返回一個新的字符串 ,您只需忽略它即可。

split[i].replace

所以你要做

spilt[i] = split[i].replace

方法replace(...)不會更改您使用的String,而是使用替換后的值創建一個新的String。

您必須分配split[i].replace(split[i], "(" + split[i] + ")"); 返回split[i]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM