我試圖做一個數學運算和匹配串的字母: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