Programa Java

14 respostas
E

import java.util.Scanner;

public class guiao4 {

public static void main (String[] args) {
	
	Scanner scan = new Scanner(System.in);
	
	System.out.print("Insere o numero que deseja criar a sequencia?");
	double n = scan.nextInt();
	double i =2;
	double count =0;
	double c;
	double d;
	
	for(double j=n;j>=i;j--){
		count++;
		do{
			if(j%2==0){
				d=j/4;
			System.out.print(d);}					
		else{
			c=j*3+1;
	System.out.print(c);
		}
			}
		while(d==1);
	}
	
	System.out.println();
	System.out.println(count);
}

}

Este programa faz uma sequencia de números, e o que quero que o programa faça é que quando chegue ao 1, o programa pará porem o while não está a funcionar. Não sei o problema. Em numeros pares ele divide por 2 enquanto em numeros impares ele multiplica por 3 e soma por 1.
E o programa no fim diz quantas operações fez até chegar ao 1.

14 Respostas

drsmachado

Não sei se sou apenas eu, mas

while (d == 1);

Me diz que eventual repetição do trecho só deve ocorrer se d for exatamente igual a 1, logo, se após a primeira iteração o valor for diferente de 1, ele seguirá com o código, sem repetir o loop.

E

Pois eu quero que ele faça a sequencia até chegar ao 1. Nao devo portanto usar o while ?

drsmachado

Ou seja, a condição não deve ser “enquanto d = 1”, certo?

D

if (d == 1){

//O que você quer que faça

}

E

Olá faz o seguinte altera a seguinte linha:

double n = scan.nextInt();

para:

double n = scan.nextDouble();

Pois vc esta passando um valor Double, ve aí se dá certo, outra dica sempre inicialize as variáveis locais (variáveis de métodos)

Abs.,

E

Pois nao sei se expliquei me bem o que quero fazer é :

import java.util.Scanner;

public class guiao4 {

public static void main (String[] args) {
	
	Scanner scan = new Scanner(System.in);
	
	System.out.print("Insere o numero que deseja criar a sequencia?");
	double n = scan.nextInt();
	double i =2;
	double count =0;
	double c;
	double d = 0;
	
	for(double j=n;j>=i;j--){
		count++;
			if(j%2==0){
				d=j/4;
			System.out.println(d);}					
		else{
			c=j*3+1;
	System.out.println(c);
		}
	}
	
	System.out.println();
	System.out.println("O numero de operaçoes é "+count);
}

}

Ao usar este programa fico com a soluçao:

Insere o numero que deseja criar a sequencia?10
2.5
28.0
2.0
22.0
1.5
16.0
1.0 Eu gostava que acabasse aqui a sequencia
10.0
0.5

O numero de operaçoes é 9.0

E queria usar um do and while .

D

estike:
Pois nao sei se expliquei me bem o que quero fazer é :

import java.util.Scanner;

public class guiao4 {

public static void main (String[] args) {
	
	Scanner scan = new Scanner(System.in);
	
	System.out.print("Insere o numero que deseja criar a sequencia?");
	double n = scan.nextInt();
	double i =2;
	double count =0;
	double c;
	double d = 0;
	
	for(double j=n;j>=i;j--){
		count++;
			if(j%2==0){
				d=j/4;
			System.out.println(d);}					
		else{
			c=j*3+1;
	System.out.println(c);
		}
	}
	
	System.out.println();
	System.out.println("O numero de operaçoes é "+count);
}

}

Ao usar este programa fico com a soluçao:

Insere o numero que deseja criar a sequencia?10
2.5
28.0
2.0
22.0
1.5
16.0
1.0 Eu gostava que acabasse aqui a sequencia
10.0
0.5

O numero de operaçoes é 9.0

E queria usar um do and while .

Usando do…while poderia ser assim:

do{

//Código

}

while(d > 1);

E

Delmar27:
estike:
Pois nao sei se expliquei me bem o que quero fazer é :

import java.util.Scanner;

public class guiao4 {

public static void main (String[] args) {
	
	Scanner scan = new Scanner(System.in);
	
	System.out.print("Insere o numero que deseja criar a sequencia?");
	double n = scan.nextInt();
	double i =2;
	double count =0;
	double c;
	double d = 0;
	
	for(double j=n;j>=i;j--){
		count++;
			if(j%2==0){
				d=j/4;
			System.out.println(d);}					
		else{
			c=j*3+1;
	System.out.println(c);
		}
	}
	
	System.out.println();
	System.out.println("O numero de operaçoes é "+count);
}

}

Ao usar este programa fico com a soluçao:

Insere o numero que deseja criar a sequencia?10
2.5
28.0
2.0
22.0
1.5
16.0
1.0 Eu gostava que acabasse aqui a sequencia
10.0
0.5

O numero de operaçoes é 9.0

E queria usar um do and while .

Usando do…while poderia ser assim:

do{

//Código

}

while(d > 1);

 alterei desta forma:

System.out.print(Insere o numero que deseja criar a sequencia?);

double n = scan.nextDouble();

double i =2;

double count =0;

double c;

double d =0;
do{
		for(double j=n;j>=i;j--){
		count++;
			if(j%2==0){
				d=j/4;
			System.out.println(d);}					
		else{
			c=j*3+1;
	System.out.println(c);
		}
	}
	}
		while(d>1);		
	
	
	System.out.println();
	System.out.println(count);
}

}
e continua a fazer até ao fim nao fica em 1.

D

estike:
Delmar27:
estike:
Pois nao sei se expliquei me bem o que quero fazer é :

import java.util.Scanner;

public class guiao4 {

public static void main (String[] args) {
	
	Scanner scan = new Scanner(System.in);
	
	System.out.print("Insere o numero que deseja criar a sequencia?");
	double n = scan.nextInt();
	double i =2;
	double count =0;
	double c;
	double d = 0;
	
	for(double j=n;j>=i;j--){
		count++;
			if(j%2==0){
				d=j/4;
			System.out.println(d);}					
		else{
			c=j*3+1;
	System.out.println(c);
		}
	}
	
	System.out.println();
	System.out.println("O numero de operaçoes é "+count);
}

}

Ao usar este programa fico com a soluçao:

Insere o numero que deseja criar a sequencia?10
2.5
28.0
2.0
22.0
1.5
16.0
1.0 Eu gostava que acabasse aqui a sequencia
10.0
0.5

O numero de operaçoes é 9.0

E queria usar um do and while .

Usando do…while poderia ser assim:

do{

//Código

}

while(d > 1);

 alterei desta forma:

System.out.print(Insere o numero que deseja criar a sequencia?);

double n = scan.nextDouble();

double i =2;

double count =0;

double c;

double d =0;
do{
		for(double j=n;j>=i;j--){
		count++;
			if(j%2==0){
				d=j/4;
			System.out.println(d);}					
		else{
			c=j*3+1;
	System.out.println(c);
		}
	}
	}
		while(d>1);		
	
	
	System.out.println();
	System.out.println(count);
}

}
e continua a fazer até ao fim nao fica em 1.

É porque de qualquer modo ele vai executar a instrução…

faz assim:

import java.util.Scanner;

public class JavaApplication4 {

public static void main (String[] args) {

Scanner scan = new Scanner(System.in);

System.out.print(Insere o numero que deseja criar a sequencia?);

double n = scan.nextDouble();

double i =2;

double count =0;

double c;

double d = 0;

double j;
for(j=n;j>=i;j){

count++;

if(j%2==0){

d=j/4;

System.out.println(d);}	

else{

c=j*3+1;

System.out.println©;

}

if (d == 1){

break;

}
}

System.out.println();

System.out.println("O numero de operaçoes é "+count);

}

}
E

Pois assim ja resulta obrigado :wink:

Mas se quisesse utilizar a expressão do and while como poderia fazer ou não daria?

D

Ou, usando do…while:

import java.util.Scanner;

public class JavaApplication4 {

public static void main (String[] args) {

Scanner scan = new Scanner(System.in);

System.out.print(Insere o numero que deseja criar a sequencia?);

double n = scan.nextDouble();

double i =2;

double count =0;

double c;

double d = 0;

double j;
do{

for(j=n;j>=i;j–){

count++;

if(j%2==0){

d=j/4;

if (d == 1){

break;

}

System.out.println(d);}	

else{

c=j*3+1;

System.out.println©;

}
}

}

while(d > 1);
System.out.println();

System.out.println("O numero de operaçoes é "+count);

}

}
D

Parando no “1”:

import java.util.Scanner;

public class JavaApplication4 {

public static void main (String[] args) {

Scanner scan = new Scanner(System.in);

System.out.print(Insere o numero que deseja criar a sequencia?);

double n = scan.nextDouble();

double i =2;

double count =0;

double c;

double d = 0;

double j;
do{

for(j=n;j>=i;j–){

count++;

if(j%2==0){

d=j/4;

System.out.println(d);}

if (d == 1){

break;

}

else{

c=j*3+1;

System.out.println©;

}
}

}

while(d > 1);
System.out.println();

System.out.println("O numero de operaçoes é "+count);

}

}
E

Obrigado pela dica :wink:

D

blz

Criado 22 de outubro de 2012
Ultima resposta 22 de out. de 2012
Respostas 14
Participantes 4