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();
}
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!!!
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
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…
[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());
}
Pelo decorrer do topico
vc deve ter resolvido esta duvida , referente ao link
e para vc aprender como postar nesta comunidade ,
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 .
[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!