Estou começando agora e na apostila da caelum tem um exercício.
se x é par, y = x / 2
se x é impar, y = 3 * x + 1
imprime y
O programa deve então jogar o valor de y em x e continuar até que y tenha o valor final de 1. Por
exemplo, para x = 13, a saída será:
40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1
[color=darkred]SÓ QUE EU QUERIA EM VEZ DE COLOCAR UM VALOR FIXO, deixar o usuário inserir[/color]. Mas meu código está dando loop infinito por exemplo quando digito 13 a saída está 40, 40, 40, 40, 40, 40, 40… dêem uma conferida (obs troquei o nome da variável “y” que pede no enunciado acima por “regra”).
Código:
[code]import javax.swing.JOptionPane;
public class calculo {
public static void main (String [ ] args) {
int regra;
String y = JOptionPane.showInputDialog("Digite um número");
int x = Integer.parseInt(y);
while(x>0) {
if (x%2==0){
regra = x/2;
}
else{
regra = 3 * x +1;
}
System.out.print(regra+", ");}
System.exit(0);
}
}[/code]
Queria colocar a saída com o JOptionPane.showMessageDialog, mas deixei com o método System.out.print.
Eu ia só dar umas dicas sem entregar a solução, mas como o s4nchez foi mais camarada (porém menos didático) só vou acrescentar que caso você não queira saber o número informado, a variável regra é desnecessária.
Ola!!
Pessoal sou + q iniciante em java, e estou tentando fazer um exercio bem tranquilo so q estou apalhando, alguem poderia me ajudar no seguinte exercicio abaixo;
Faça uma classe que receba o sexo (m ou f) e imprima sé é homem ou mulher utilizando o switch…case…default.
import javax.swing.JOptionPane;;
public class Notas {
public static void main (String args[]){
char sexo = JOptionPane.showInputDialog("Qual o sexo: "); //Esta apresentando erro nessa linha
switch (sexo) {
case ‘m’: JOptionPane.showMessageDialog(null, “Maculino”);
break;
case ‘f’: JOptionPane.showConfirmDialog(null, “Feminino”);
break;
default: JOptionPane.showConfirmDialog(null, “Bichona”);
}
}
}
[quote=lueferraz]Ola!!
Pessoal sou + q iniciante em java, e estou tentando fazer um exercio bem tranquilo so q estou apalhando, alguem poderia me ajudar no seguinte exercicio abaixo;
Faça uma classe que receba o sexo (m ou f) e imprima sé é homem ou mulher utilizando o switch…case…default.
import javax.swing.JOptionPane;;
public class Notas {
public static void main (String args[]){
char sexo = JOptionPane.showInputDialog("Qual o sexo: "); //Esta apresentando erro nessa linha
switch (sexo) {
case ‘m’: JOptionPane.showMessageDialog(null, “Maculino”);
break;
case ‘f’: JOptionPane.showConfirmDialog(null, “Feminino”);
break;
default: JOptionPane.showConfirmDialog(null, “Bichona”);
}
}
} [/quote]
char sexo = JOptionPane.showInputDialog("Qual o sexo: "); //Esta apresentando erro nessa linha
Um char não pode receber o conteúdo de uma String. Pense nisso como dois copos. Um grande e um pequeno. Ao tentar transferir o liquido do copo grande para o copo pequeno, o líquido pode transbordar, e a gente não quer isso.
O que você pode fazer é impedir que o usuário digita mais de um caractere.
Basta pegar o texto com uma String e fazer uma variável char que recebe o primeiro caractere dessa String:
String sexo = JOptionPane.showInputDialog("Qual o sexo: ");
char s = sexo.charAt(0);
switch (s) {
case 'm': JOptionPane.showMessageDialog(null, "Maculino");
break;
case 'f': JOptionPane.showConfirmDialog(null, "Feminino");
break;
default: JOptionPane.showConfirmDialog(null, "Bichona");
como o marcio_gs ja disse, o switch so aceita int e tipo numerado…entao vc pode fazer o seguinte…
qndo vc pegar a entrada do q foi digitado, vc pode comparar o valor e setar um int em sexo, para poder usar o switch…tipo
String sexo = JOptionPane.showInputDialog("Qual o sexo: ");
int opcao;
if (sexo.equalsIgnoreCase("M")) // isso ele compara strings
opcao = 1;
else
opcao = 2;
ai apartir disso vc pode usar o switch tranquilo…so q ao inves de usar assim:
switch (sexo) {
case 'm': JOptionPane.showMessageDialog(null, "Maculino");
break;
case 'f': JOptionPane.showConfirmDialog(null, "Feminino");
vc usa assim :
switch opcao {
case 1: JOptionPane.showMessageDialog(null, "Maculino");
break;
case 2: JOptionPane.showConfirmDialog(null, "Feminino");
.
.
.
Ae deu certinho agora!!!
Ae marcio_gs e LuanMelo esta é a 1ª vez q participo de um Forum p/ tirar dúvidas e agradeço mto por essa atitude de vcs em ajudar aqles q buscam em foruns um meio uma ajuda e são correspondidos.
++++ uma vez mto obrigado e a certeza de q brve precisarei da ajuda novamente vlw mesmo!!!
Olá pessoal,
Alguem poderia me ajudar no exercicio abaixo, qdo executo so fica o tempo tdo pedindo a idade, nem ai e nem da o resultado.
[b]Escreva uma classe q receba a idade de n pessoas, calcule e imprima a quantidade
de pessoas maiores de idade(idade >= 18 anos).sair quando idade=0. Utilize o while
import javax.swing.JOptionPane;
public class ExeWhile {
public static void main(String[]args){
int id = Integer.parseInt(JOptionPane.showInputDialog("Informe a Idade: "));
int cont=0;
while (id > 0){
if(id <=18 ){
cont+=1;
}
id = Integer.parseInt(JOptionPane.showInputDialog("Informe a Idade: "));
}
JOptionPane.showMessageDialog(null,"o numero de pessoas maior de idade e : "+cont);
}