Estou fazendo alguns exercicios de um livro estou precisando de ajuda!

Copiei o código do livro e estou fazendo exercicios…
mais o programa parece ki entra num laço infinito num sei oq fazer…
se alguem puder me ajudar!
eu agradeço!!!

public class CreditCard {
//Variaveis de instância:

private String number;
private String name;
private String bank;
private double balance;
private int limit;

//Construtor:
CreditCard(String no, String nm, String bk, double bal, int lim) {
    number = no;
    name = nm;
    bank = bk;
    balance = bal;
    limit = lim;

}

//Métodos de acesso:
public String getNumber() {
    return number;
}

public String getName() {
    return name;
}

public String getBank() {
    return bank;
}

public double getBalance() {
    return balance;
}

public int getLimit() {
    return limit;
}

//Métodos de ação:
public boolean chargelt(double price) { //Debita
    if (price + balance > (double) limit)
        return false;//Não há dinheiro suficiente para debitar

    balance += price;
    return true;//Neste Caso o débito foi efetivado
}

public void makePayment(double payment) {
    balance -= payment;
}

public static void printCard(CreditCard c) {//Impri informações sobre o cartão

    System.out.println("Number = " + c.getNumber());
    System.out.println("Name = " + c.getName());
    System.out.println("Bank = " + c.getBank());
    System.out.println("Balance = " + c.getBalance());
    System.out.println("Limit = " + c.getLimit());

}

}

public class Test {

@SuppressWarnings("empty-statement")
public static void main(String[] args) {
    CreditCard wallet[] = new CreditCard[10];
    wallet[0] = new CreditCard("5391 0375 9387 5309", "John Bowman", "California Savings", 0.0, 2500);
    wallet[1] = new CreditCard("5391 0375 9387 5309", "John Bowman", "California Federal", 0.0, 3500);
    wallet[2] = new CreditCard("5391 0375 9387 5309", "John Bowman", "California Finance", 0.0, 5000);
    
    for (int i = 1; i <= 16; i++) {
        wallet[0].chargelt((double) i);
        wallet[1].chargelt(2.0 * i); //Conversão implícita
        wallet[2].chargelt((double) 3 * i);//conversão explicita
    }
    System.out.println("Card payments: ");

    for (int i = 0; i < 3; i++) {
        CreditCard.printCard(wallet[i]);
        while (wallet[i].getBalance()> 100.0);
        wallet[i].makePayment(100.0);
        System.out.println("New balance =" + wallet[i].getBalance());
        
    }
    System.out.println();
}

}

Olá Bem Vindo
antes de mais nada de uma olhada neste tópico .

http://www.guj.com.br/posts/list/15778.java

Num intendi irmão no que isso vai me ajudar???

Cara, analisa só esse código:

while (wallet[i].getBalance()> 100.0); 

Esse loop vai executar infinitamente se o valor de getBalance() de wallet[i] (No caso, i = 0) for maior que 100.0, uma vez que você fechou o bloco while com ; sem pôr nenhum incrementador ou mesmo corpo de bloco…

To intendo pode ser mais claro por favor sou inciiante …mesmo apesar de programar em delphi…
vc poderia me dar um exemplo por favor!!!
pq eu copiei o código do livro…então era pra ta rodando certo neh???
e no livro ele mostra a saida!!!

mais num sei…

incrementador no caso seria…?? me desculpa pela Noobice…mais eh minah duvidaAAAA!!!

desde ja agradeço!!!

Um incrementador seria uma variável que controlaria o fluxo de um loop. Ela determina quando o loop deve acabar.
ex:

int i = 0;//Variável incrementadora while (i < 10){ //Enquanto i for menor que 10 faça... System.out.println(i);//Imprimao valor atual de "i" i ++;//Incrementa em "1" o valor de i... }

Ou seja, quando “i” chegar em 10 o loop pára! Sacou?!

Com relação ao exemplo que tu pegou, se for um livro de responsa ele roda sim, senão, os cara podem ter te enganado :slight_smile:

Da uma pesquisada na net! Tem muita coisa!

vlew :!:

É isso mesmo velho!!!
Acho que ele se confundiu na digitação!!

:!:

Tudo bem até ai eu intendi…
o problema eh ki será ki ta faltando eu jogar alguam valor a VAriavel…BALANCE …pra rodar?

qnt ao livro eu acho ki eh de confiança amis como nada na vida eh perfeito soh DEUS…
achus ki eles se enganaram mesmo pois eu jah li reli copiei re copiei…

osso…

mais msm assim Agradecido pela ajuda!!

[quote=osmio][quote=arthur_roots]Copiei o código do livro e estou fazendo exercicios…
mais o programa parece ki entra num laço infinito num sei oq fazer…
se alguem puder me ajudar!
eu agradeço!!!
[/quote]

Altere esse trecho:

for (int i = 0; i < 3; i++) {
CreditCard.printCard(wallet[i]);
while (wallet[i].getBalance()> 100.0);
wallet[i].makePayment(100.0);
System.out.println("New balance =" + wallet[i].getBalance());
} 

Para:

		for (int i = 0; i < 3; i++) {
			CreditCard.printCard(wallet[i]);
			while (wallet[i].getBalance() > 100.0) {
				wallet[i].makePayment(100.0);
				System.out.println("New balance =" + wallet[i].getBalance());
			}
		}

Ou ainda para:

		for (int i = 0; i < 3; i++) {
			CreditCard.printCard(wallet[i]);
			while (wallet[i].getBalance() > 100.0)
				wallet[i].makePayment(100.0);
			System.out.println("New balance =" + wallet[i].getBalance());
		}

Entenda as alterações. Caso fique com dúvidas, poste novamente.[/quote]

Pro autor do tópico:Tem certeza que você copiou corretamente?

E caso você não entenda o que ele quis dizer, você simplesmente “matou” o while no seu código cara.

for (int i = 0; i < 3; i++) {
CreditCard.printCard(wallet[i]);
while (wallet[i].getBalance()> 100.0); //Ponto e virgula aqui, isso que "matou" seu while.Faltou as chaves pro while também.
wallet[i].makePayment(100.0);
System.out.println("New balance =" + wallet[i].getBalance());
} 

AGRADECIDO ai …rodou …soh intendi oq vc…mudo
foi a estrura?
pior ki eu uso o CTRL F!!!

muito orbigado por essa ajuda de vcs…espero ter ajduar de vcs sempre…
pois sempre vou estar por aki…

agradecido!

Cada vez que você for colar um código use as tags “code” entre colchetes.


//Seu código aqui;

E no final do código por “/code” entre colchetes.

Tipo assim


//aki o código

assimm???
neh??
vlw ai

Pelo decorrer do topico
vc deve ter resolvido esta duvida , referente ao link
e para vc aprender como postar nesta comunidade :smiley: ,
dai fica mais fácil eh muito mais rápido lhe ajudar e nunca esqueça
abriu um tópico tirou a sua duvida siga a informação na minha assinatura .

Olá,

Também sou iniciante em Java, será que você poderia me informar qual o nome desse livro?

Obrigada

Vai te ajudar em obter uma resposta mais rápida dos seus problemas.
Além disso, te ajuda a ser um usuário mais útil da comunidade.

[quote=arthur_roots]Copiei o código do livro e estou fazendo exercicios…
mais o programa parece ki entra num laço infinito num sei oq fazer…
se alguem puder me ajudar!
eu agradeço!!!
[/quote]

Altere esse trecho:

for (int i = 0; i < 3; i++) {
CreditCard.printCard(wallet[i]);
while (wallet[i].getBalance()> 100.0);
wallet[i].makePayment(100.0);
System.out.println("New balance =" + wallet[i].getBalance());
} 

Para:

		for (int i = 0; i < 3; i++) {
			CreditCard.printCard(wallet[i]);
			while (wallet[i].getBalance() > 100.0) {
				wallet[i].makePayment(100.0);
				System.out.println("New balance =" + wallet[i].getBalance());
			}
		}

Ou ainda para:

		for (int i = 0; i < 3; i++) {
			CreditCard.printCard(wallet[i]);
			while (wallet[i].getBalance() > 100.0)
				wallet[i].makePayment(100.0);
			System.out.println("New balance =" + wallet[i].getBalance());
		}

Entenda as alterações. Caso fique com dúvidas, poste novamente.

[quote=arthur_roots]AGRADECIDO ai …rodou …soh intendi oq vc…mudo
foi a estrura?
pior ki eu uso o CTRL F!!!

muito orbigado por essa ajuda de vcs…espero ter ajduar de vcs sempre…
pois sempre vou estar por aki…

agradecido![/quote]

Estruturas de repetição são além de linguagem.
Primeiro, voce precisa entender o conceito de cada uma das estruturas, para depois aplica-lo em qualquer linguagem de programação.

Recomendo, antes de continuar a fazer os exercícios do livro em questão, que voce de uma revisada nos conceitos dessas estruturas. No meu entendimento, fazer um exercício “rodar” não indica exatamente que voce o tenha entendido.

Pesquise um pouco sobre as estruturas de repetição e sua aplicação em Java. Entenda o conceito. Depois disso, mesmo que haja algum erro de digitação no livro (talvez por ser uma tradução, e traduções normalmente possuem erros) voce sera capaz de identificar e corrigir.

Utilize o GUJ como fonte de material de estudo, antes mesmo de postar seus exercícios. Descubra quais são os conceitos avaliados nos exercícios que esta resolvendo e caso fique com dúvida no conceito, pesquise por ele. Entenda, e tente resolver o exercício novamente.

Assim, vai estar bem mais estruturado em conhecimentos básicos. Quando chegar as partes mais complexas, vai tirar de letra! :wink: