"99 garrafas de cerveja"

Eai galera tudo blz?
Bom sou iniciante do iniciante do iniciante em java :lol:
e queria saber apenas se tem alguma coisa de errado com esse aplicativo empresarial.

public class BeerSong {
public static void mai (String[] args) {
int beerNum = 99;
String word = "bottles";

while (beerNum>0) {
if (beerNum ==1){
 word = "bottles; // no singular como em UMA garrafa.
}
System.out.println(beerNum+""+word+"of beer on the wall");
mais uma pergunta oq significa essas aspas entre os ++?
System.out.printl(beerNum+""+word+"of beer.");
System.out.printl("Take one down.");
System.out.printl("Passa it around.");
beerNum = beerNum - 1;

if (beerNum>0) {
   System.out.println(beerNum+""+word+"of beer on the wall");
} else {
System.out.printl("No more bottles of beer on the wall");
} // fim do else
} // fim do loop while
} // fim do método main
} // fim da classe

Hehehe, gostei do teu programa.
Rapaz a única coisa que eu vi de errado foi no trecho:

 if (beerNum ==1){
word = "bottles; // no singular como em UMA garrafa.
} 

Já que tu faz um teste pra saber se só tem uma pra colocar no singular, então word deveria receber o String “bottle”.
Quanto a tua pergunta sobre as aspas entre os operadores de concatenação, o que acontece é que tá errado, deveria ter um espaço entre as aspas, pra, no instante da exibição o programa exibir o número de garrafas separado na palavra (bottle/bottles).

Beleza, mas o que teu programa tem de errado mesmo são erros bobos de digitação, como por exemplo, um String inicializado, porém esquecido de ser fechado. Chamadas ao método System.out.printl (etc, etc, etc).
O código corretado deveria ser assim:

public class BeerSong {
	public static void main(String[] args) {
		int beerNum = 99;
		String word = "bottles";

		while (beerNum > 0) {
			if (beerNum == 1) {
				word = "bottle";
			}
			
			System.out.println(beerNum + " " + word + " of beer on the wall");
			System.out.println(beerNum + " " + word + " of beer.");
			System.out.println("Take one down.");
			System.out.println("Pass it around.");
			beerNum = beerNum - 1;

			if (beerNum > 0) {
				System.out.println(beerNum + " " + word + " of beer on the wall");
			} else {
				System.out.println("No more bottles of beer on the wall");
			} // fim do else
		} // fim do loop while
	} // fim do método main
} // fim da classe

void mai

ao invés de

void main

???

[quote=Ademir Franco]Eai galera tudo blz?
Bom sou iniciante do iniciante do iniciante em java :lol:
e queria saber apenas se tem alguma coisa de errado com esse aplicativo empresarial…
} // fim da classe[/quote]

Qual a sua real duvida?

obs: as “” entre os sinais de + fazem parte da concatenação.
Mas nesse caso, elas não incuem nada no texto concatenado.

[quote=brunogamacatao]Hehehe, gostei do teu programa.
Rapaz a única coisa que eu vi de errado foi no trecho:

 if (beerNum ==1){
word = "bottles; // no singular como em UMA garrafa.
} 

Já que tu faz um teste pra saber se só tem uma pra colocar no singular, então word deveria receber o String “bottle”.
Quanto a tua pergunta sobre as aspas entre os operadores de concatenação, o que acontece é que tá errado, deveria ter um espaço entre as aspas, pra, no instante da exibição o programa exibir o número de garrafas separado na palavra (bottle/bottles).

Beleza, mas o que teu programa tem de errado mesmo são erros bobos de digitação, como por exemplo, um String inicializado, porém esquecido de ser fechado. Chamadas ao método System.out.printl (etc, etc, etc).
O código corretado deveria ser assim:

[code]
public class BeerSong {
public static void main(String[] args) {
int beerNum = 99;
String word = “bottles”;

	while (beerNum > 0) {
		if (beerNum == 1) {
			word = "bottle";
		}
		
		System.out.println(beerNum + " " + word + " of beer on the wall");
		System.out.println(beerNum + " " + word + " of beer.");
		System.out.println("Take one down.");
		System.out.println("Pass it around.");
		beerNum = beerNum - 1;

		if (beerNum > 0) {
			System.out.println(beerNum + " " + word + " of beer on the wall");
		} else {
			System.out.println("No more bottles of beer on the wall");
		} // fim do else
	} // fim do loop while
} // fim do método main

} // fim da classe
[/code][/quote]

Muito obrigado amigo o “mai” é erro de digitação mesmo, valeu cara.

Esse é um exercício do “Use a Cabeça Java” ? (livro muito bom)

O pessoal que trabalha com tradução de livros de informática, sobre linguagens, deveria conhecer a linguagem em questão. Se a tradução fosse completa (sem traduzir os comandos) ajudaria muito, posso querer aprender a linguagem e não inglês.

[quote=francislei_apiai]Esse é um exercício do “Use a Cabeça Java” ? (livro muito bom)

O pessoal que trabalha com tradução de livros de informática, sobre linguagens, deveria conhecer a linguagem em questão. Se a tradução fosse completa (sem traduzir os comandos) ajudaria muito, posso querer aprender a linguagem e não inglês.
[/quote]

É do “Use a Cabeça Java” sim amigo, muito bom o livro.

Aproveitando o tópico gostaria de tirar uma dúvida sobre esse exercício, pois no livro da Kathy pede para corrigir o mesmo pois há um pequeno erro na saída.

A constatação que fiz foi que na última saída a frase “1 bottles of beer on the wall” aparece no plural (a palavra bottles) mas fiquei na dúvida pois eu não conheço essa brincadeira das 99 garrafas e queria saber se realmente é para ter 2x a mesma frase ou se esse é que é realmente o erro pois a saída fica assim rodando o programa exatamente como está no livro:

X bottles of beer on the wall (repetida?)
X botlles of beer on the wall
Take on down.
Pass it around

Mas agora queria saber se não tem uma linha repitida ali ou se deve existir mesmo, bom eu fiz duas correções, vo colocar aqui para vocês verem.

A primeira é essa

[code]public class BeerSong {
public static void main (String[] args) {
int beerNum = 10;
String word = “bottles”;

	while (beerNum > 0) {
		if (beerNum == 1) {
			word = "bootle"; // no singular, como UMA garrafa
	}
	
	System.out.println(beerNum + " " + word + " of beer on the wall");
	System.out.println(beerNum + " " + word + " of beer");
	System.out.println("Take on down.");
	System.out.println("Pass it around");
	beerNum = beerNum - 1;
	
	if (beerNum > 0) { // Comentei a linha abaixo mas não arrumei o if (mas sei que tem que arrumar e não deixar esse else ai)
		//System.out.println(beerNum + " " + word + " of beer on the wall");			
	} else {
		System.out.println("No more bottles of beer on the wall");
		}	
	}
}

}[/code]

A segunda é essa que julgo ser a mais correta caso a frase se repita mesmo 2x

[code]public class BeerSong {
public static void main (String[] args) {
int beerNum = 10;
String word = “bottles”;

	while (beerNum > 0) {
		if (beerNum == 1) {
			word = "bootle"; // no singular, como UMA garrafa
	}
	
	System.out.println(beerNum + " " + word + " of beer on the wall");
	System.out.println(beerNum + " " + word + " of beer");
	System.out.println("Take on down.");
	System.out.println("Pass it around");
	beerNum = beerNum - 1;
	
	if (beerNum == 1) {
		word = "bootle";
	} // Acrescentei esse código pra resolver a situação de sair a palavra bottles com 1 única garrafa.
	
	if (beerNum > 0) {
		System.out.println(beerNum + " " + word + " of beer on the wall");			
	} else {
		System.out.println("No more bottles of beer on the wall");
		}	
	}
}

}[/code]

Desculpem o Fenix down, mas usando o google da forma como pesquisei veio dar direto nesse tópico e como ele ficou sem responder essa questão creio que ajudará outros iniciantes.

Obrigado

Correção:

[code]package testes;
public class BeerSong {
public static void main (String[] args) {
int beerNum = 99;
String word = “bottles”;

	while (beerNum>0) {
		if (beerNum ==1){
			word = "bottles"; // no singular como em UMA garrafa.
		}
		System.out.println(beerNum+""+word+"of beer on the wall");
		//mais uma pergunta oq significa essas aspas entre os ++?
		System.out.println(beerNum+""+word+"of beer.");
		System.out.println("Take one down.");

		System.out.println("Passa it around.");
		beerNum = beerNum - 1;

		if (beerNum>0) {
			System.out.println(beerNum+""+word+"of beer on the wall");
		} else {
			System.out.println("No more bottles of beer on the wall");
		} // fim do else
	} // fim do loop while
} // fim do método main

} // fim da classe [/code]

Você estava errando em System.out.println(“Seu texto”);
Estava faltando um “N”.

Faltava um “N” no método principal:public static void main (String[] args)

Só uma perguntinha: Voc~e está programando no bloco de notas?

Tem a música do elefante também!

public class Elefante {

    public static void main(String[] args) {

        // singular é tratado a parte.
        System.out.println("1 elefante incomoda muita gente!");

        int ELEFANTES = 100;

        for (int i = 2; i <= ELEFANTES; i++) {
            StringBuffer incomodam = new StringBuffer("incomodam");

            if (i % 4 == 0) { // a cada 4 elefantes, incomodar mais ainda
                for (int j = 1; j < i; j++) {
                    incomodam.append(", incomodam");
                }
            }
            if (i % 2 == 0) { // elefante par
                System.out.println(i + " elefantes " + incomodam + " muito mais!");
            } else { // impar
                System.out.println(i + " elefantes " + incomodam + " muita gente!");
            }

        }
    }
}

[quote=Bruno Laturner]Tem a música do elefante também!

[code]
public class Elefante {

public static void main(String[] args) {

    // singular é tratado a parte.
    System.out.println("1 elefante incomoda muita gente!");

    int ELEFANTES = 100;

    for (int i = 2; i <= ELEFANTES; i++) {
        StringBuffer incomodam = new StringBuffer("incomodam");

        if (i % 4 == 0) { // a cada 4 elefantes, incomodar mais ainda
            for (int j = 1; j < i; j++) {
                incomodam.append(", incomodam");
            }
        }
        if (i % 2 == 0) { // elefante par
            System.out.println(i + " elefantes " + incomodam + " muito mais!");
        } else { // impar
            System.out.println(i + " elefantes " + incomodam + " muita gente!");
        }

    }
}

}
[/code][/quote]

hahahahahahhahahahahahahahah
Adoro a série use a cabeca, vc aprende com coisas banais heheh
Mto bom !

Abraços

Amigo, as “” concatenam as duas variáveis. Essas aspas tem o objetivo de dar um espaço " " entre a variável beerNum e word para que o conteúdo dessas variáveis possam ser lidos corretamente… exemplo sem espaço entre as aspas:

99bottles of beer on the wall…

Agora com espaços entre as aspas: " "

99 bottles of beer on the wall…

Vlw galera, espero ter ajudado…

[quote=giordano221]Amigo, as “” concatenam as duas variáveis. Essas aspas tem o objetivo de dar um espaço " " entre a variável beerNum e word para que o conteúdo dessas variáveis possam ser lidos corretamente… exemplo sem espaço entre as aspas:

99bottles of beer on the wall…

Agora com espaços entre as aspas: " "

99 bottles of beer on the wall…

Vlw galera, espero ter ajudado…[/quote]

E aí galera, beleza! :smiley: Sou novo no forúm e também estou iniciando em java, ia abrir um tópico para tirar dúvida justamente sobre este
exercício,mas como já vi aqui, só vou citar a minha dúvida:
Na saída, começa com o número: 60-59-58…não deveria começar com 99? :?: Ah a questão da vírgula eu consegui visualizar e corrigir…

mas com moderação… :smiley:

[code]public class BeerSong {
public static void main(String[] args) {

	boolean sabeHelloWorld = true;
	double idadeJaveiro = 17.5;

	if (idadeJaveiro < 18 & sabeHelloWorld)	{
		System.out.println("www.youtube.com/watch?v=3KnpZYkTWno&NR=1");
		}
		else	{
			System.out.println("www.99-bottles-of-beer.net/lyrics.html");
		}
   }

}
[/code]

[]s

depois de duas iskins ficou assim…
o legal e vc ir no site e pegar a saida atualizada “original com Actually the song is represented in 1268 different programming languages and variations.” e ir copando até ficar == :slight_smile:
lembre-se da condição anterior…rsrsrsr

[code]public class BeerSong {
public static void main(String[] args) {

	int beerNum = 99;

	String word = "bottles";

	while (beerNum > 0)	{

		if (beerNum == 1)	{
			word = "bottle"; // no singular, como UMA garrafa.
		}

		System.out.print("\n" + beerNum + " " + word + " of beer on the wall, ");
		System.out.println(beerNum + " " + word + " of beer.");
		System.out.print("Take on down and ");
		System.out.print("pass it aroud, ");

		beerNum = beerNum - 1;

		if (beerNum > 0)	{
			System.out.println(beerNum + " " + word + " of beer on the wall.\n\n");
			}	else	{
				System.out.println("no more bottles of beer the wall.\n\n" +

									"\nNo more bottles of beer on the wall, no more bottles of beer.\n" +
									"Go to the store and buy some more, 99 bottles of beer on the wall\n");
			} // fim de else
		} // fim do loop while
	} // fim do metodo main
} // fim da classe[/code]

Executem o código e veja que , ele fala 99 cervejas então a contagem seria do 99 ao 0 , e ela começa do 59 =)

Pessoal também sou iniciante na linguagem…

No livro da Kathy “USE A CABEÇA! JAVA” ela menciona que o código das 99 bottles of beer não está totalmente certo, segundo ela, a saída do programa não vai sair da forma correta…

Alguém pode me ajudar no conserto do programa:

/*

public class BeerSong
{
public static void main(String[] args)
{
int beerNum = 99;
String word = “bottles”;

  while(beerNum > 0)
  {
	if(beerNum == 1)
	{
	   word = "bottle";
	}
	System.out.println(beerNum + " " + word + " of beer on the wall");
	System.out.println(beerNum + " " + word + " of beer.");
	System.out.println("Take one down.");
	System.out.println("Pass it around.");
	beerNum = beerNum - 1;
	if(beerNum > 0)
	{
	   System.out.println(beerNum + " " + word + " of beer on the wall");
	}
	else
	{	
    System.out.println("No more bottles of beer on the wall");
	}	
 }	

}
}

*/

Obrigado… :-o :-o

O problema não é no código, a janela do cmd tem um limite de buffer. Pra visualizar a saida completa você precisa configurar a janela do cmd indo em propiedades:

:wink:

Oi, para quem tem dificuldade com este 2º exercício do clássico 99 garrafas de cerveja do 1º capítulo do Livro Use a cabeça! Java, segue a minha solução depois que ouvi e aprendi a música, consegui corrigir, completar e otimizar o código. Mas não tornei-me alcoólatra ! :smiley:

Melhor visualizado no console do eclipse.

package capitulo1;

/* 
 * 99 garrafas de cerveja
 * By Erivando Ramos 
 * 21/04/2011
 */

public class CancaoDaCerveja {
	public static void main(String[] args) {

		int numCervejas = 99;
		String palavra = " garrafas";
		String[] texto = new String[4];
		texto[0] = " de cerveja na parede";
		texto[1] = " de cerveja";
		texto[2] = "não há mais" + palavra;
		texto[3] = "Vá até a loja comprar um pouco mais, " + numCervejas + palavra + texto[0] + ".";

		while (numCervejas > 0) {
			System.out.print(numCervejas + palavra + texto[0] + ", ");
			System.out.println(numCervejas + palavra + texto[1] + ".");
			System.out.print("Tome uma e passe adiante, ");
			numCervejas = numCervejas - 1;
			if (numCervejas == 1) {
				palavra = " garrafa"; // no singular, como uma "garrafa"
			}
			if (numCervejas >= 1) {
				System.out.println(numCervejas + palavra + texto[0] + ".\n");
			} else {
				System.out.println(texto[2] + texto[0] + ".\n");
			}
		} // fim do loop while
		System.out.println(texto[2].replace("n", "N") + texto[0] + ", " + texto[2] + texto[1] + ".");
		System.out.println(texto[3]);

	} // fim do método main
} // fim da classe

A tradução pode ser melhorada, lógico! Não sou poliglota, o foco aqui é a solução do exercício imposto no livro.

Segue a letra da música 99 garrafas de cerveja:

Até++

O erro está na linha 6 "while (beerNum > 0) { "

a condição while deve ser: "while (beerNum >=0) { "

Porque uma hora a cerveja (beer) tem que acabar !

Entendeu??? :lol: