Pessoal desculpem a demora, mas para fim de informação, eu consegui fazer o sistema conforme estava querendo. Eu encontrei no site devmidia o algoritmo para validação de cpf, nao imaginava que tinha uma logica com os últimos dois dígitos
`package bancoandrade;
public class BancoAndrade {
public static void main(String[] args) {
Data dtn1 = new Data(04, 01, 1990);
String meuCPF = "36393374845";
if (Cliente.isCPF(meuCPF) == true){
System.out.println("CPF: " + Cliente.imprimeCPF(meuCPF));
}else {System.out.println("CPF inválido !!!");
}
Cliente cli1 = new Cliente("José", "Da Silva", meuCPF,dtn1);
Data dta1 = new Data(31, 07, 2018);
Conta c1 = new Conta(123,cli1, 0.0, "123-4",dta1);
int total =Conta.getTotalDeContas();
c1.setSaldo(300.0);
c1.deposita(200.0);
c1.saca(100.0);
c1.saca(40);
System.out.println(c1.recuperaDadosParaImpressao());
}
}`.
package bancoandrade;
import java.util.InputMismatchException;
class Cliente {
private String nome;
private String sobrenome;
private String cpf;
private Data dataNascimento;
Cliente (String n, String sb, String cpf, Data dtnasc){
this.nome = n;
this.sobrenome = sb;
this.cpf = cpf;
this.dataNascimento = dtnasc;
}
public String getNome(){
return this.nome;
}
public void setNome(String n){
this.nome = n;
}
public String getSobreNome(){
return this.sobrenome;
}
public void setSobreNome(String n){
nome = n;
}
public static boolean isCPF(String cpf){
// considera-se erro cpf's formados por uma sequencia de números iguais
if(cpf.equals("00000000000")|| cpf.equals("11111111111")||
cpf.equals("22222222222")|| cpf.equals("33333333333")||
cpf.equals("44444444444")|| cpf.equals("55555555555")||
cpf.equals("66666666666")|| cpf.equals("77777777777")||
cpf.equals("88888888888")|| cpf.equals("99999999999")||
(cpf.length() != 11))
return(false);
char dig10, dig11;
int sm, i, r, num, peso;
// "try" - protege o código para eventuais erros de coversão de tipo (int)
try {
// Cálculo do primeiro Digito Verificador
sm = 0;
peso = 10;
for(i=0; i<9; i++){
// converte o i-esimo caractere do CPF em um numero:
// por exemplo, transforma o caractere '0' no inteiro 0
// (48 é a posição de '0'na tabela ASCII)
num = (int)(cpf.charAt(i) - 48);
sm = sm + (num * peso);
peso = peso - 1;
}
r = 11 - (sm %11);
if ((r == 10)||(r == 11))
dig10 = '0';
else dig10 = (char)(r + 48); // converte no respectivo caractere numerico
// Calculo do segundo Digito Verificados
sm = 0;
peso = 11;
for(i=0; i<10; i++){
num = (int)(cpf.charAt(i) - 48);
sm = sm + (num * peso);
peso = peso -1;
}
r = 11 -(sm % 11);
if ((r == 10)|| (r == 11))
dig11 = '0';
else dig11 = (char)(r + 48);
// Verifica se os digitos calculados conferem com os digitos informados.
if ((dig10 == cpf.charAt(9)) && (dig11 == cpf.charAt(10)))
return(true);
else return(false);
} catch (InputMismatchException erro){
return(false);
}
}
public static String imprimeCPF(String cpf){
return(cpf.substring(0, 3) + "." + cpf.substring(3, 6) + "." +
cpf.substring(6, 9) + "-" + cpf.substring(9, 11));
}
public Data getdataNascimento(){
return this.dataNascimento;
}
}
package bancoandrade;
class Conta {
private static int totalDeContas;
private int numero;
private Cliente titular;
private double saldo;
private double limite;
private String agencia;
private Data dataDeAbertura;
//contrutor
Conta(int n, Cliente t, double s, String a, Data d){
totalDeContas++;
numero = n;
titular = t;
saldo = s;
agencia = a;
dataDeAbertura = d;
}
public static int getTotalDeContas(){
return Conta.totalDeContas;
}
public double getSaldo(){
return this.saldo + this.limite;
}
public void setSaldo(double saldo) {
this.saldo = saldo;
}
public void saca(double valor) {
//posso sacar at? o saldo
if (valor > this.saldo) {
System.out.println("Não posso sacar um valor maior que o saldo");
} else {
this.saldo = this.saldo - valor;
}
}
void deposita(double quantidade) {
if (quantidade > 0){
this.saldo += quantidade;
} else {
System.out.println("Deposite um valor positivo");
}
}
double calculaRendimento(){
return this.saldo = this.saldo*0.1;
}
String recuperaDadosParaImpressao(){
String dados = "Titular: "+titular.getNome()+" "+titular.getSobreNome();
dados += "\nData de nascimento: "+ titular.getdataNascimento().getDia()+"/"+titular.getdataNascimento().getMes()+"/"+titular.getdataNascimento().getAno();
dados += "\nNúmero: "+numero;
dados += "\nAgência: "+agencia;
dados += "\nSaldo Atual: "+saldo;
dados += "\nRendimento mensal: "+calculaRendimento();
dados += "\nData de abertura da conta: "+dataDeAbertura.getDia()+"/"+dataDeAbertura.getMes()+'/'+dataDeAbertura.getAno();
//inserir outras informações da conta
return dados;
}
}
package bancoandrade;
class Data {
private int dia;
private int mes;
private int ano;
Data(int d, int m, int a){
dia = d;
mes = m;
ano = a;
}
public int getDia(){
return this.dia;
}
public void setDia(int d){
this.dia = d;
}
public int getMes(){
return this.mes;
}
public void setMes(int m){
this.mes = m;
}
public int getAno(){
return this.ano;
}
public void setAno(int a){
this.ano = a;
}
}