gpt4 book ai didi

java - 如何创建一个程序,将 0 和 1 随机分配给数组元素并找到它的十进制值

转载 作者:行者123 更新时间:2023-11-30 07:41:03 26 4
gpt4 key购买 nike

我编写此代码是为了查找以符号大小表示的 8 位十进制值。因此,我创建了一个数组并随机为其分配 0-1 之间的值,然后打印其位模式和真实的十进制值。在 Java 中还有比这更简单的方法吗?

import java.util.Random;

class Example {
public static void main(String args[]) {
Random r = new Random();
int A[] = new int[20];
for (int i = 0; i < A.length; i++) {
int count = 1, k = 6, l = 0, m = 0;
for (int j = 0; j < 8; j++) {
A[i] = r.nextInt(2);
System.out.print(A[i]);
if (count == 1) {
if (A[i] == 1) {
m = -A[i];
} else {
m = 1;
}
} else {
double d = Math.pow(2, k);
l += (int) d * A[i];
k--;
}
count++;
}
System.out.println(" = " + (l * m));
}
}
}

最佳答案

您可以尝试创建一个随机二进制字符串,然后使用 JAVA 的字符串到十进制转换器 Integer.parseInt(string,base) 将此字符串转换为十进制值,这里是一个示例:`

String randBinaryNumber;
char sign;

for(int i = 0; i < 8; i++){
// creates binary string
randBinaryNumber += Integer.toString(r.nextInt(2));
}
//gets sign of randBinaryNumber
sign = randBinaryNumber.charAt(0);

// removes first character of string
randBinaryNumber = randBinaryNumber.substring(1);

// converts string to decimal
int decimal = Integer.parseInt(randBinaryNumber,2);

if(sign == '1')
decimal *=-1;

这样的东西应该可以工作,如果您有任何问题请发表评论。

编辑:在 for 循环中使用字符串连接是不好的做法,因为它会为每次迭代创建一个新对象。相反,您应该使用字符串构建器类来附加。

您应该添加:

 StringBuilder sb = new StringBuilder();
randBinaryNumber = sb.append(r.nextInt(2));

而不是:

 randBinaryNumber += Integer.toString(r.nextInt(2));

这会将您的字符串值存储在一个对象中,而不是每次添加二进制数字时都创建一个新对象。

关于java - 如何创建一个程序,将 0 和 1 随机分配给数组元素并找到它的十进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34696979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com