例如:
- 输入: ['A', 'Z', 'F', 'D', ...]
- 输出: [0, 25, 5, 3, ...]
在 C 语言中,只需要将字符减去 'A' 即可,但是在 Java 中好像无法这样做。
例如:
在 C 语言中,只需要将字符减去 'A' 即可,但是在 Java 中好像无法这样做。
使用 String 对象上的 indexOf
方法。例如,
"ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf('F')
返回 5。
在Java中,您也可以对char类型进行简单的数学运算:
System.out.println('A' - 'A');
将输出0。
result = (result < 0 || result > 25) ? -1 : result
,这个方法将会返回与你提出的解决方案完全相同的结果。 - Thilopublic enum Alphabet {
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
}
现在,您可以使用 ordinal 函数来获取此处的偏移量。例如 Alphabet.L.ordinal();
然而,鉴于我认为您正在处理函数,这是一个更有用的定义。
public enum Alphabet {
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z;
public static int getNum(String targ) {
return valueOf(targ).ordinal();
}
public static int getNum(char targ) {
return valueOf(String.valueOf(targ)).ordinal();
}
}
import java.util.Arrays;
import java.util.Collections;
public class CharacterIndex {
private char[] characters = new char[]{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
public int index(char character) {
assert characters != null;
return Arrays.binarySearch(characters, Character.toUpperCase(character));
}
}
单元测试
import org.junit.Before;
import org.junit.Test;
import static junit.framework.Assert.assertEquals;
public class CharacterIndexTest {
private CharacterIndex characterIndex;
@Before
public void createIndex() {
characterIndex = new CharacterIndex();
}
@Test
public void testIndexOfLetterA() {
assertEquals(0, characterIndex.index('A'));
assertEquals(0, characterIndex.index('a'));
}
@Test
public void testNotALetter() {
assertEquals(-1, characterIndex.index('1'));
}
}
'B' - 'A' = 1
您可以使用 java.lang.Character.toUpperCase('a') - 65;
String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
return alphabet.indexOf( myChar );