如何更改属性的随机元素?

时间:2014-02-26 02:35:45

标签: java string random

我正在尝试在属性中选择一个随机元素,然后在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;
    }

我在添加相反数字位时输了。

我应该澄清这是作业!

4 个答案:

答案 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来实现。