Pessoal, eu tenho que instanciar um novo objeto p/ comparar o saldo?

estarei postando aqui as 2 classes que possuo:

[code]import java.util.Scanner;

public class Menu {
int contador = 0, opcao;
int i = 0, numConta = 0;
Scanner input= new Scanner(System.in);
static Menu menu = new Menu();
Conta[] conta= new Conta[100];

public static void main(String[] args) {
	menu.menu();
}

public void menu(){
	
	System.out.println("Qual operação deseja executar?");
	System.out.println("1-Cadastrar Conta   2-Alterar Conta   3-Excluir Conta	" +
					   "4-Operações da Conta   0-Sair");
	opcao = input.nextInt();
	switch(opcao){
		case 1:	cadastro();
				System.out.println("Conta(s) cadastrada(s)!");
			break;
	
		case 2: alterar();
			break;
		
		case 3: excluir();
			break;

		case 4: operar();
			break;
				
		case '0': 
			break;
	
		default:  System.out.println("Opcao Invalida");
	}
	menu();
}

public void print(Conta[] conta){
	for (i=0; i < contador; i++){
		System.out.printf("%s\n\n", conta[i].toString());
	}		
}


public void cadastro(){
	System.out.println("Deseja criar qtas contas:");
	contador = input.nextInt();
	for (i=0; i < contador; i++){
		System.out.println("1 - Conta Comum		2 - Conta Especial		0 - Retornar");
		opcao = input.nextInt();

		switch(opcao){
			case 1:		
				Conta contaC = new Conta(null, 0, 0);
				contaC.criaConta();
				conta[i]= contaC;
				break;
			
			case 2:
				ContaEspecial contaE = new ContaEspecial(null, 0, 0, 0);
				contaE.criaConta();
				conta[i]= contaE;
				System.out.println("Digite o limite:"); 
				contaE.setLimite();
				break;
			
			case '0':
				menu();
				break;
			
			default:  System.out.println("Opcao Invalida!");
		}
	}
}

public void alterar(){
	System.out.println("Qual conta deseja alterar?");
	System.out.println("Informe o nº da conta:");
	numConta = input.nextInt();
	for (i = 0; i < conta.length; i++){
		if (numConta == conta[i].numConta){
			System.out.printf("\n%s\n\n", conta[i].toString());
			System.out.println("Qual campo da conta desejas alterar:");
			System.out.println("\n1- Nº da Conta:");
			System.out.println("2- Nome:");
			System.out.println("3- saldo:");
			
			if (conta[i] instanceof ContaEspecial){
				System.out.println("4- Limite:");
			}
			System.out.println("0- Retorna:");
			opcao = input.nextInt();
			
			switch(opcao){
				case 1:	
					System.out.println("Digite o nº da conta:");
					conta[i].setNumConta();
					break;
			
				case 2:
					System.out.println("Digite o novo titular:");
					conta[i].setNome();
					break;
				
				case 3:
					System.out.println("Digite o novo saldo:");
					conta[i].setSaldo();
					break;
			
				case 4:
					System.out.println("Digite o novo limite:");
					ContaEspecial ce = (ContaEspecial) conta[i];
					ce.setLimite();
					break;				
				
				case 0:
					menu();
					break;
			
				default:  System.out.println("Opcao Invalida!");
			}System.out.println("Campo alterado com sucesso");
			menu();

		}else{
			System.out.println("Conta inexistente!");
			alterar();
		}
	}	
}
public void excluir(){
	
}

public void operar(){
	System.out.println("Digite o nº da conta:");
	numConta = input.nextInt();
	try{ 
		for (i = 0; i < conta.length; i++){
			if (numConta != conta[i].numConta){
				throw new ContaInexistenteException();
			}	
				System.out.println("Qual operação deseja executar?");
				System.out.println("1 - Saque		2 - Depósito		0 - Retornar");
				opcao = input.nextInt();
		
				switch(opcao){
					case 1:	
						conta[i].saque();
						break;
			
					case 2:
						break;
			
					case '0':
						operar();
						break;
			
					default:  System.out.println("Opcao Invalida!");
				}
		}		
	}catch( ContaInexistenteException e ){
		System.out.println( "Conta Inexistente!" );
	}
}

}
[/code]

[code]import java.util.Scanner;

public class Conta {
public String nome;
public int numConta;
public float saldo;
public float valor;

Scanner input = new Scanner(System.in);
public Conta(String n, int nCont, float s){
	nome = n;
	numConta = nCont;
	saldo = s;
	
}

public Conta(String n, int nCont){
	nome = n;
	numConta = nCont;
	saldo = 0;
}

public void setNome(){
	this.nome= input.next();
}

public void setNumConta(){
	this.numConta = input.nextInt();
}

public void setSaldo(){
	this.saldo= input.nextFloat();
}

public String getNome(){
	return nome;
}

public int getNumConta(){
	return numConta;
}

public float getSaldo(){
	return saldo;
}

public void deposito(float val ){
	saldo = saldo + val;

}

public void saque(){    
	System.out.println("Digite o valor para saque:");
	float val= input.nextFloat();
	try {
		if( conta[i].saldo < val ){ 
			throw new SaldoInsuficienteException( );
		}	
		saldo -= val;
	}catch( SaldoInsuficienteException e ) {
		System.out.println("Saldo Insuficiente ");
	}
}
	
public void criaConta(){
	System.out.println("Digite o nome: ");
	setNome();
	System.out.println("Digite o nº da conta: ");
	setNumConta();
	System.out.println("Digite o saldo: ");
	setSaldo();

}

public String toString(){
	return "Cliente: " +getNome()+ "\nConta: " +getNumConta()+ "\nSaldo: " +getSaldo();
}

}
[/code]

Gostaria de saber como fazer para comparar o saldo(já existente de um objeto do array) com o valor a ser sacado
e necessário fazer um new conta?

Veja se eu entendi sua dúvida

vc se refere a função saque q vc chama assim : conta[i].saque(); ??
Se conta[i] q é um objeto do tipo conta, já está instanciado vc pode fazer as comparações normalmente. Era essa sua dúvida?

Sugiro a leitura:

http://blog.caelum.com.br/2006/09/14/nao-aprender-oo-getters-e-setters/

vlw pessoal, resolvido o problema!