::::返回结果采用8421 规则,A=1,B=2,C=4,D=8,E=16。例如实际填涂为A 和C 时,计算公式为1+4=5,然后用得到的数字加上96,就得到对应结果的ASCII 码数值101,既小写字母——“e”,返回结果和实际填涂项的对应规则如下表所示:
序号 选择项 8421 码
1 A 00001
2 B 00010
3 AB 00011
4 C 00100
5 AC 00101
6 BC 00110
7 ABC 00111
8 D 01000
9 AD 01001
10 BD 01010
11 ABD 01011
12 CD 01100
13 ACD 01101
14 BCD 01110
15 ABCD 01111
16 E 10000
17 AE 10001
18 BE 10010
19 ABE 10011
20 CE 10100
21 ACE 10101
22 BCE 10110
23 ABCE 10111
24 DE 11000
25 ADE 11001
26 BDE 11010
27 ABDE 11011
28 CDE 11100
29 ACDE 11101
30 BCDE 11110
31 ABCDE 11111请问大虾们:当我得到8421值的时候,有没有好的方法得到我要选择的选项(不逐一判断)。
序号 选择项 8421 码
1 A 00001
2 B 00010
3 AB 00011
4 C 00100
5 AC 00101
6 BC 00110
7 ABC 00111
8 D 01000
9 AD 01001
10 BD 01010
11 ABD 01011
12 CD 01100
13 ACD 01101
14 BCD 01110
15 ABCD 01111
16 E 10000
17 AE 10001
18 BE 10010
19 ABE 10011
20 CE 10100
21 ACE 10101
22 BCE 10110
23 ABCE 10111
24 DE 11000
25 ADE 11001
26 BDE 11010
27 ABDE 11011
28 CDE 11100
29 ACDE 11101
30 BCDE 11110
31 ABCDE 11111请问大虾们:当我得到8421值的时候,有没有好的方法得到我要选择的选项(不逐一判断)。
解决方案 »
- 为什么找不到符号?
- 打印JSP页面中一部分内容?
- 请问actionlistener监听哪些事件?
- 高分求取JSP函数大全,邮箱:[email protected],谢谢谢谢:)
- 请问javax.swing.AbstractButton setFocusPainted(boolean b)是做什么的?
- Eclipse 3.0 M8 中文显示问题?
- 我在linux下运行java程序遇到的一个奇怪的问题,请大虾帮忙解决 ,急,在线等待
- 请各位老大帮忙看看,我的程序出现的错误,本人没法理解。
- List remove object的问题
- 为什么在静态方法里不能用this ?
- TOMCAT5.0默认路径的配置问题.
- 最基础问题!
如果是这样,可以考虑使用hashtable来完成这件任务,经过键值对的存储,以常数时间存取数据。例如:
Map m = new HashMap();
m.put("A", new Integer(1));
m.put("B", new Integer(2));
m.put("AB", new Integer(3));
......当需要提取数据时,可以通过将输入的选项映射至hashtable来获得相应的数据。例如,假设这里你已经输入了所有的选项,以及他们相对应的8421码。同时,系统外界通过输入"AB",获得想要的8421码,
// Get some data u want.
int code8421 = m.get("AB");
如此,你就可以获得"AB"相对应的8421码(等于3),而无论你的表有多大,这只需要花费常数时间O(c)。
关于,hashtable数据结构的详细信息可以查看相关的数据结构书籍,应该都会有非常详细的记载,如果需要对HashMap class进行了解,可以查看jdk document,以获得更多信息。@.@||~
// Get some data u want.
int code8421 = ((Integer)m.get("AB")).intValue();@.@||~
midthinker(呵呵)的方法,搞反了吧:
设置:
Map m = new HashMap(50);
m.put("00001", "A");
m.put("00010", "B");
....
根据8421值得到你要的选项:
String str8421 = "00010";
String strChoice = (String)m.get(str8421);
public static String getMeaning(int n){
String s = "", codeStr[] = {"A", "B", "C", "D", "E"};
System.out.println(format(Integer.toBinaryString(n), 5).toCharArray());
char[] c = format(Integer.toBinaryString(n), codeStr.length).toCharArray();
for(int i = c.length - 1; i >= 0; i--){
if(c[i] == '1'){
s += codeStr[codeStr.length - i - 1];
}
}
return s;
}
private static String format(String fN, int precision){
int length = fN.length();
for (int i = 0; i < precision - length; i++){
fN = "0" + fN;
}
return fN;
}
public static void main(String[] srgs) throws IOException{
System.out.println(getMeaning(3));
System.out.println(getMeaning(6));
System.out.println(getMeaning(26));
}
}
public static String getMeaning(int n){
String s = "", codeStr[] = {"A", "B", "C", "D", "E", "F", "G"};
System.out.println(format(Integer.toBinaryString(n), codeStr.length).toCharArray());
char[] c = format(Integer.toBinaryString(n), codeStr.length).toCharArray();
for(int i = c.length - 1; i >= 0; i--){
if(c[i] == '1'){
s += codeStr[codeStr.length - i - 1];
}
}
return s;
}
private static String format(String fN, int precision){
int length = fN.length();
for (int i = 0; i < precision - length; i++){
fN = "0" + fN;
}
return fN;
}
public static void main(String[] srgs) throws IOException{
System.out.println(getMeaning(3));
System.out.println(getMeaning(6));
System.out.println(getMeaning(26));
System.out.println(getMeaning(66));
}
}只要在这里添加:String s = "", codeStr[] = {"A", "B", "C", "D", "E", "F", "G"};就可扩充。
这是到“G”的例子。