列表don';t添加日期java
我试图将我的值从一个列表分离到两个不同的列表。我的代码只是验证是否有带字母的数字。我是这样做的:列表don';t添加日期java,java,arraylist,Java,Arraylist,我试图将我的值从一个列表分离到两个不同的列表。我的代码只是验证是否有带字母的数字。我是这样做的: import java.util.Scanner; import java.util.regex.Pattern; import java.util.regex.Matcher; import java.util.List; import java.util.ArrayList; public class Programa { public static void main(String
import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.List;
import java.util.ArrayList;
public class Programa {
public static void main(String[] args) {
Funcionarios valido = new Funcionarios();
Funcionarios invalido = new Funcionarios();
Funcionarios aux = new Funcionarios();
List<String> aux_lista = new ArrayList<>();
Scanner entrada = new Scanner(System.in);
String nome, apelido, cpf, nascimento, cep, endereco, numero, cidade, estado, cargo;
Pattern filtro_letra = Pattern.compile("[^1234567890.-]+[ \\t\\n\\x0B\\f\\r]", Pattern.CASE_INSENSITIVE);
Pattern filtro_numero = Pattern.compile("-?[\\\\d\\\\.]+", Pattern.CASE_INSENSITIVE);
Pattern filtro_data = Pattern.compile("[^1234567890/]+[ \\t\\n\\x0B\\f\\r]", Pattern.CASE_INSENSITIVE);
int[] indices_invalidos = new int[10];
int[] indices_validos = new int[10];
int i = 0, j = 1, k = 0, m = 0, n = 0, f = 0;
String aux_teste;
while (j == 1 && i <= 10) {
m = 0;
n = 0;
System.out.println("Deseja Adicionar Um Funcionario?\n 1 - Sim \n 2 - Nao\n");
j = Integer.parseInt(entrada.nextLine());
if (j == 1) {
System.out.println("Digite o Nome do Funcionario: ");
nome = entrada.nextLine();
aux.nome.add(nome);
System.out.println("Digite o Apelido: ");
apelido = entrada.nextLine();
aux.apelido.add(apelido);
System.out.println("Digite a Data de Nascimento: ");
nascimento = entrada.nextLine();
aux.nascimento.add(nascimento);
System.out.println("Digite o CPF: ");
cpf = entrada.nextLine();
aux.cpf.add(cpf);
while (aux.EncontrarCPF(cpf)) {
System.out.println("CPF ja cadastrado, insira outro CPF:");
cpf = entrada.nextLine();
}
System.out.println("Digite o CEP: ");
cep = entrada.nextLine();
aux.cep.add(cep);
System.out.println("Digite o Endereco: ");
endereco = entrada.nextLine();
aux.endereco.add(endereco);
System.out.println("Digite o Numero: ");
numero = entrada.nextLine();
aux.numero.add(numero);
System.out.println("Digite a Cidade: ");
cidade = entrada.nextLine();
aux.cidade.add(cidade);
System.out.println("Digite o Estado:");
estado = entrada.nextLine();
aux.estado.add(estado);
System.out.println("Digite o Cargo: ");
cargo = entrada.nextLine();
aux.cargo.add(cargo);
}
i++;
}
i = 0;
while (i < aux.nome.size()) {
Matcher somente_letras = filtro_numero.matcher(aux.nome.get(i));
aux_teste = aux.nome.get(i);
if (!somente_letras.find()) {
invalido.nome.add(aux_teste);
System.out.println(invalido.nome);
}
i++;
aux_teste = "";
}
//}
System.out.println("Invalidos");
System.out.println(invalido.nome);
System.out.println("Validos");
System.out.println(valido.nome);
}
}
import java.util.Scanner;
导入java.util.regex.Pattern;
导入java.util.regex.Matcher;
导入java.util.List;
导入java.util.ArrayList;
公共课程{
公共静态void main(字符串[]args){
Functionarios valido=新Functionarios();
Functionarios invalido=新Functionarios();
Functionarios aux=新Functionarios();
List aux_lista=new ArrayList();
Scanner entrada=新扫描仪(System.in);
字符串nome、apelido、cpf、nascimento、cep、endereco、numero、cidade、estado、cargo;
Pattern filtro_letra=Pattern.compile(“[^1234567890.-]+[\\t\\n\\x0B\\f\\r]”,Pattern.Pattern,不区分大小写);
Pattern filtro\u numero=Pattern.compile(“-?[\\\\d\\\\\.]+”,Pattern.CASE不区分大小写);
Pattern filtro_data=Pattern.compile(“[^1234567890/]+[\\t\\n\\x0B\\f\\r]”,Pattern.不区分大小写);
int[]索引_invalidos=新的int[10];
int[]索引_validos=新的int[10];
int i=0,j=1,k=0,m=0,n=0,f=0;
字符串辅助测试;
虽然(j==1&&i很抱歉,但我确信您的匹配模式工作不正常
如果我将其替换为以下内容:
if(!aux_teste.matches("[a-zA-Z]+$"))
它将所有带有数字的名称放入invalido.nome,确认将字符串放入列表的方法工作正常
编辑:这是一个“最小”的测试用例应该是什么样子-删除所有用户输入的内容并使用简单的数据:
public static void main(String[] args) {
Funcionarios valido = new Funcionarios();
Funcionarios invalido = new Funcionarios();
Funcionarios aux = new Funcionarios();
Pattern filtro_numero = Pattern.compile("-?[\\\\d\\\\.]+", Pattern.CASE_INSENSITIVE);
aux.nome.add("Juan");
aux.nome.add("Ju4n");
aux.nome.add("Simon");
aux.nome.add("S1mon");
String aux_teste;
int i = 0;
while (i < aux.nome.size()) {
Matcher somente_letras = filtro_numero.matcher(aux.nome.get(i));
aux_teste = aux.nome.get(i);
//if (!somente_letras.find()) {
if(aux_teste.matches("[a-zA-Z]+$")){
valido.nome.add(aux_teste);
}
else{
invalido.nome.add(aux_teste);
}
i++;
}
System.out.println("Invalidos");
System.out.println(invalido.nome);
System.out.println("Validos");
System.out.println(valido.nome);
}
publicstaticvoidmain(字符串[]args){
Functionarios valido=新Functionarios();
Functionarios invalido=新Functionarios();
Functionarios aux=新Functionarios();
Pattern filtro\u numero=Pattern.compile(“-?[\\\\d\\\\\.]+”,Pattern.CASE不区分大小写);
附加名称添加(“胡安”);
补充名称(“Ju4n”);
附加名称添加(“西蒙”);
附加名称增补(“第一个月”);
字符串辅助测试;
int i=0;
而(i
输入和输出两种不同的if条件,查看您的模式是否工作。无效。nome在哪里声明?是什么?我认为您没有发布足够的代码来复制this@doctorlove-我发了it@doctorlove-invalido只是我的类,它包含我的变量类型“列表”你能发布Functionarios类的代码吗?谢谢,请看你能不能发布。这对我们会有很大帮助。
public static void main(String[] args) {
Funcionarios valido = new Funcionarios();
Funcionarios invalido = new Funcionarios();
Funcionarios aux = new Funcionarios();
Pattern filtro_numero = Pattern.compile("-?[\\\\d\\\\.]+", Pattern.CASE_INSENSITIVE);
aux.nome.add("Juan");
aux.nome.add("Ju4n");
aux.nome.add("Simon");
aux.nome.add("S1mon");
String aux_teste;
int i = 0;
while (i < aux.nome.size()) {
Matcher somente_letras = filtro_numero.matcher(aux.nome.get(i));
aux_teste = aux.nome.get(i);
//if (!somente_letras.find()) {
if(aux_teste.matches("[a-zA-Z]+$")){
valido.nome.add(aux_teste);
}
else{
invalido.nome.add(aux_teste);
}
i++;
}
System.out.println("Invalidos");
System.out.println(invalido.nome);
System.out.println("Validos");
System.out.println(valido.nome);
}