- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我需要找到所有不同的 3 位代码。此扫描通过 3 个嵌套的 fro 循环完成。
我想获取我生成的这个位代码数组,然后输出仅相差一位的所有其他代码。所以我试图生成一个 8*3 二维数组。我知道有 3 个代码仅相差 1 位数字,但我就是找不到一种方法将其编码出来。
这是我到目前为止所拥有的。
String[] codes = new String[8];
int count = 0;
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
for (int k = 0; k < 2; k++) {
codes[count] = "" + i + j + k;
count ++;
}
}
}
String[] code_1 = new String[3];
String[][] codesNear = new String[8][3];
for(int h = 0; h < codesNear.length; h ++){
for(int i = 0 ; i < codes[1].length() ;i ++){
if(codes[h].charAt(i) == '1' ){
if(i != 2)
codesNear[h][i] = codes[1].substring(0,i) + "0" + codes[1].substring(i+1);
else codesNear[h][i] = codes[1].substring(0,i) + "0";
}
else {
if(i != 2)
codesNear[h][i] = codes[1].substring(0,i) + "1" + codes[1].substring(i+1);
else codesNear[h][i] = codes[1].substring(0,i) + "1";
}
}
}
for (String s : codes) {
System.out.println(s);
}
count = 0;
for(String[] s : codesNear){
System.out.println("Count" + count + "Code " + codes[count]);
for(String st : s ){
System.out.println(st);
}
count ++;
}
}
输出是这样的
Count0Code 000
101
011
001
Count1Code 001
101
011
000
Count2Code 010
101
001
001
Count3Code 011
101
001
000
Count4Code 100
001
011
001
Count5Code 101
001
011
000
Count6Code 110
001
001
001
Count7Code 111
001
001
000
正如你们所见,输出不正确。例如,对于 000,三个输出应该是 100 , 010 , 001 而不是 101 , 011 ,001
此外,是否可以使用此代码并使其能够读取某个数字 n,然后找到 n 长二进制代码的所有不同可能性
最佳答案
您可以通过将整数的最低 3 位转换为字符串的方法来简化此过程。
String bitString(int n) {
return new String("" + ((n>>>2)&1) + ((n>>>1)&1) + (n & 1));
}
然后,您可以对每个位位置(1: 001、2: 010、4:100)中带有 1 位的数字使用按位异或。然而,很难判断这是否是您从发布的问题中想要的。
String[][] codesNear = new String[8][4];
for(int i = 0; i < 8; i++) {
codesNear[i][0] = bitString(i);
codesNear[i][1] = bitString(i ^ 1);
codesNear[i][2] = bitString(i ^ 2);
codesNear[i][3] = bitString(i ^ 4);
}
要回答编辑中问题的其他部分,是的。但是,bitString 也必须修改
int numBit = 3;// or whatever number of bits up to the largest 2^numBit that can be stored in int.
int numCombinations = 1<<numBits;//2^numBits (here numCombinations == 8)
String[][] codesNear = new String[numCombinations][numBits+1];
for(int i = 0; i < numCombinations; i++) {
codesNear[i][0] = bitString(i,numBits);
for(int j = 0; j < numBits; j++) {
codesNear[i][j+1] = bitString(i ^ (1<<j),numBits);
}
}
然后将 bitString 更改为此或类似的内容以构建字符串。简化是将数字移位以按位去除该位并加 1。
String bitString(int n, int numBits) {
StringBuffer ret = new StringBuffer(numBits);
for(int i = numBits; i > 0; i--) {
ret.append((n>>>(i-1))&1);
}
return ret.toString();
}
关于java - 生成与 3 位代码仅相差一位数的所有 3 位代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54758324/
我使用此代码来测量我的 C 程序的计算时间: clock_t start = clock() ; do_some_work() ; clock_t end = clock() ; double ela
我正在尝试找到一个 SQL 查询,该查询将计算至少相差 30 分钟的不同开始时间的数量。 我有一些员工在一周内至少三个不同的时间开始工作时获得积分,其中开始时间与其他开始时间至少相差 30 分钟。 例
我正在尝试显示一个时间表,并且我想在一周内的每组比赛之后创建一个休息时间。例如,我想要一个 在第一周的前五场比赛之后。然后在第二周的五场比赛之后再次进行。我现在所拥有的包括前六场比赛,然后是之后的每五
float a=67107842,b=512; float c=a/b; printf("%lf\n",c); 为什么 c 是 131070.000000 而不是正确的值 131070.0039062
我有一个谓词 predicate = [NSPredicate predicateWithFormat:@"character.id IN %@", indexs]; 它生成以下 SQL: CoreD
我正在编写一个在 UI 中有一个 DatePicker 和一个 TimePicker 的应用程序。我需要获取用户设置的日期和时间并存储在服务器中。 例如用户选择“2015 年 11 月 13 日 13
我有一个带有 OffsetDateTime 的 JPA 实体类像这样的字段: @Entity class MyEntity(clock: Clock) { // ... val cre
这个问题已经有答案了: What does size of the memcmp return value mean? (2 个回答) 已关闭 3 年前。 所以我必须使用 C 重新创建 memcmp(
两个查询。第一个比第二个长 200 倍。为什么?PostgreSQL 10.1。 Metro 和 Sel - 同一张 table 上的 View 。 EXPLAIN ANALYZE SELECT *
我在 Google Play 中有一个应用,并在其上进行 Firebase 分析。我正在尝试跟踪广告来源。我不明白正确的下载次数在哪里,因为 Google Play Console 显示 150 个安
我正在使用 Python 进行核密度估计,并使用高斯混合模型对多维数据样本的可能性进行排序。每条数据都是一个角度,我不确定如何处理机器学习角度数据的周期性。 首先,我通过添加 360 来移除所有负角,
最近我遇到了一件非常奇怪的事情——一种方法在性能分析器下非常慢,没有明显的原因。它包含很少的 long 操作,但被调用得相当频繁 - 它的总体使用量约为总程序时间的 30-40%,而其他部分似乎“更重
请有人向我解释这种情况。 我有以下代码: Click the button to display the date and time as a string, using the ISO standa
如何在考虑时间复杂度的情况下找到从 1 到 20 亿(使用任何编程语言且不使用任何外部库)相差 6 的连续质数对的数量,例如 (23,29)? 尝试过埃拉托色尼筛法,但获得连续素数是一项挑战 使用了生
我正在尝试找到一种方法来过滤两个日期/时间字段的差异小于 90 分钟的记录。 例子: orders.created_at = 2015-08-09 20:30:20 table2.created_at
我在使用 EEPlus 库从 excel (.xlsx) 文件获取正确的日期字段值时遇到问题。 具体问题是在 excel 中我有例如1900.01.04,但在 C# 中我得到 1900.01.03。
我是一名优秀的程序员,十分优秀!