import java.util.Scanner;public class Cajero { protected int dnisearch; protected Cliente[] clientes = new Cliente[2]; public static void main(String[] args) { int i; int valor; Cajero ca = new Cajero(); for (i=0;i<=1;i++) { ca.clientes[i] = new Cliente(); System.out.println("Ingrese Cliente, DNI y Saldo"); ca.clientes[i].setData(); } System.out.println("ingrese dni para obtener saldo"); valor=ca.getSaldo(); if (valor != 0) System.out.println("el saldo es "+valor); else System.out.println("No se encontro el Cliente"); } public int getSaldo () { Scanner s = new Scanner(System.in); Cajero ca = new Cajero(); dnisearch = s.nextInt(); int k; for (k=0;k<=1;k++) { if ( dnisearch == ca.clientes[k].dni ) return (ca.clientes[k].saldo); else return 0; } }}
porque tengo ke definir 2 veces esto: Cajero ca = new Cajero(), intente ponerlo fuera de los metodos pero no funciona.
for (i=0;i<=1;i++) { if (clientes[i].dni == dnis) r=clientes[i].saldo; else r=0; }
import java.util.*; public class Cajero { public Cliente[] clientes = new Cliente[2]; public static void main(String[] args) { int valor; int dnisearch; int i; Scanner s = new Scanner(System.in); Cajero ca = new Cajero(); for (i=0;i<=1;i++) { ca.clientes[i] = new Cliente(); System.out.println("Ingrese Cliente, DNI y Saldo"); ca.clientes[i].setData(); } for (i=0;i<=1;i++)//compruebo q los datos estan bien ingresados { System.out.println("Cliente: "+ca.clientes[i].nombre); System.out.println("Saldo: "+ca.clientes[i].saldo); } System.out.println("ingrese dni para obtener saldo"); dnisearch = s.nextInt(); valor= ca.getSaldo(dnisearch); if (valor == -1) System.out.println("DNI no encontrado"); else System.out.println("saldo "+valor); } public int getSaldo (int dnis) { int i; // r = -1 para indicar que no encontro el dni int r=-1; for (i=0;i<=1;i++) { if (clientes[i].dni == dnis) { r=clientes[i].saldo; // Salir del for si encuentra el DNI break; }// Eliminamos esto, que es innecesario// else// r=0; } return(r); }}
Supongan que tengo ke leer un entero en el metodo getSaldo(), deberia definir como lo hice en el main Scanner s = new Scanner(System.in); y ahi justamente es donde radica mi duda, porqué lo tengo que definir de nuevo??? si ya lo he hecho en el main.