我要求用户在控制台中插入数字。 然后,我打印这些数字,但如果任何数字包含“ - ”,它将在括号内转换为相同的数字.. 例如:如果用户插入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的新手,这就是为什么我无法理解什么是错误的。
答案 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]
。