我正在尝试在属性中选择一个随机元素,然后在0和n之间反转该随机选择元素的值,然后再次重新打印整个属性,并显示反转元素。 0的反向值是1,在这种情况下1的反向值是0。
以下是我的尝试:
String whatever = "11111";
int n = whatever.length();
//the UI class generates a random integer number between 0 and n
int p = CS2004.UI(0,n);
if (whatever.charAt(p)=='0') {
+= 1;
} else {
+= 0;
}
我在添加相反数字位时输了。
我应该澄清这是作业!
答案 0 :(得分:1)
使用三元运算符的基本StringBuilder
生成您正在寻找的内容:
StringBuilder result = new StringBuilder();
result.append(whatever.substring(0, p));
result.append(whatever.charAt(p) == '0' ? "1" : "0");
result.append(whatever.substring(p + 1, whatever.length()));
System.out.println("Result = " + result.toString());
正如其他人所说,使用StringBuilder.setCharAt()
方法会产生更简洁的答案(添加了三元运算符,这是迄今为止最短的答案):
StringBuilder result = new StringBuilder(whatever);
result.setCharAt(p, whatever.charAt(p) == '0' ? '1' : '0');
System.out.println("Result = " + result.toString());
答案 1 :(得分:1)
字符串在Java中是不可变的,但你可以做到
StringBuilder sb = new StringBuilder(whatever);
if (whatever.charAt(p)=='0') {
sb.setCharAt(p, '1');
} else {
sb.setCharAt(p, '0');
}
whatever = sb.toString();
答案 2 :(得分:1)
好的,我们试一试。
首先,您需要更改变量5
的名称 - 我认为您不允许使用数字启动变量(请参阅here)
我假设“属性”是指String
的长度?这可能应该是您5
变量的值。
所以,让我们看看一些修改过的代码......
String whatever = "11111";
int n = whatever.length();
//the UI class generates a random integer number between 0 and n
int p = CS2004.UI(0,n);
StringBuilder sb = new StringBuilder(whatever);
if (whatever.charAt(p)=='0') {
sb.setCharAt(p, '1');
} else {
sb.setCharAt(p, '0');
}
whatever = sb.toString();
此代码将更改位置p
中字符的值,然后将其转换回String
。
答案 3 :(得分:0)
Java中的字符串是不可变的,因此您需要先将它们转换为某些可变结构,然后再进行修改。
如果您试图在代码中的某个位置翻转字符,那么此代码可能会有所帮助:
String whatever = "11111";
char[] charArray = whatever.toCharArray();
int n = whatever.length();
//the UI class generates a random integer number between 0 and n
int p = CS2004.UI(0,n);
if (charArray[p]=='0') {
charArray[p] = 1;
} else {
charArray[p] = 0;
}
然后你可以修改你想要的任何字符。完成后,您可以从charArray重建String,如下所示:
String result = new String(charArray);
这也可以使用StringBuilder来实现。