我试图做一个数学运算和匹配串的字母:Java的检查字符串和匹配
我得到这个表:
static final char[] LETTERS = {'T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X','B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E'};
而且我越来越投入从X(8位+ 1个字符)的ID的键盘上输入
我试图让它检查8位数+ 1char,并且像这样完成:
我的问题是,现在我需要检查最后输入的字母通过计算输入%的数字23 的有效输入实施例的表匹配:
- 00000102X因为102%23 = 10和X是我char列表中的第10个字母;
- 24659213Q自24659213%23 = 16且Q是char列表中的第16个字母。
现在我所做的尝试是这样的:
int num = Integer.parseInt(input.replaceAll("[^0-9]", ""));
if(input.matches("[0-9]{8}[TRWAGMYFPDXBNJZSQVHLCKE]{1}"))
{
switch(num){
case 0: if(num%23==0){
if(input.charAt(8)==LETTERS[0]){
status = true;
break;
}}
....
case 10: if(num%23==10){
if(input.indexOf(8)==LETTERS[10]){
status = true;
}}
default: status = false;
}
,但没有结果,任何想法,我要去哪里错了?这并不是说我收到编译或代码错误,只是我得到的每个8位数字+字母输入都被接受。先谢谢你!
EDIT(粘贴CODE)
import java.util.Scanner;
public class Testing {
static final char[] LETRAS = {'T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X'
,'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C'
, 'K', 'E'};
String input;
public boolean status = false;
Scanner scanner = new Scanner(System.in);
//Método problema general
public static void main (String[] args) {
Testing programa = new Testing();
programa.inicio();
}
public void inicio() {
Intro();
while (!status){
datosUsuario();
comprobacion();
resultado();
}
}
//Explicar programa
public void Intro() {
System.out.println("¡Hola!\nEste programa pide y comprueba DNI's."
+ "A continuación va a pedir un DNI de forma 8 dígitos y una letra,"
+ "y va a comprobar si es válido.\n"
+ "Ejemplo DNI válido: 24659213Q\n\n");
}
//Métodos primer nivel de decomposición
//Pedir DNI por teclado
public void datosUsuario() {
System.out.print("Escribe DNI: ");
input = scanner.nextLine();
}
//Comprobación DNI
public boolean comprobacion() {
System.out.println("Comprobamos DNI...");
char letra = input.charAt(8);
if(input.matches("[0-9]{8}[TRWAGMYFPDXBNJZSQVHLCKEtrwagmyfpdxbnjzsqvhlcke]{1}"))
{
int numeros = Integer.parseInt(input.replaceAll("[^0-9]", ""));
if(LETRAS[numeros%LETRAS.length] == input.charAt(8)) {
return true;
}
}
return false;
}
//Mostrar resultado
public void resultado() {
if(status&&comprobacion()){
System.out.println("DNI válido!");
}
}
}
不知道你在做什么。发布一个[MCVE] – c0der