Estou com uma duvida no laço for , uma vez q o loop eh executado ‘x’ decrementa, o valor de ‘x’ entao eh atribuido a variavel ‘i’ porem ‘i’ continua a valer 5 ateh o fim, nao era pra ele ir decrementando junto com o ‘x’?
Considere como valor de entrada o numero 5 ae.
import java.io.*;
class FAT{
public static void main(String args[]) throws Exception{
BufferedReader l = new BufferedReader(new InputStreamReader(System.in));
String t ;
int z=1,x;
t=l.readLine();
x=Integer.parseInt(t);
for(int i=x;x>0;x--){
z = z*x;
System.out.println("Z:"+z+"\nX:"+x+"\nI:"+i+"\nT:"+t);
}
}}
Output :
5
Z:5
X:5
I:5
T:5
Z:20
X:4
I:5
T:5
Z:60
X:3
I:5
T:5
Z:120
X:2
I:5
T:5
Z:120
X:1
I:5
T:5
Amigo, ficou faltando duas linhas de código :
1 - Um System.out.Println("Digite um número por favor");
Para saber o numero de variações do código
2- Colocar o decremento i–;
[code]import java.io.*;
class FAT{
public static void main(String args[]) throws Exception{
BufferedReader l = new BufferedReader(new InputStreamReader(System.in));
String t ;
int z=1,x;
//Um detalhe que eu vi aqui , por que você não usou o método l.read(); (Já da uma saida do tipo int)
t=l.readLine();
x=Integer.parseInt(t);
//Usando o l.read(); , você não precisará fazer o casting de String para int, mas tera que criar a variavel como int.
for(int i=x;x>0;x–){
z = z*x;
System.out.println("Z:"+z+"\nX:"+x+"\nI:"+i+"\nT:"+t);
i--;
//Ficou faltando apenas esta linha para o decremento ser feito
//O decremento estava sendo feito apenas no x(dentro do for)
}
}}
[/code]
O primeiro "pedaço" do comando for é a inicialização. Ela só é executada uma vez.
Portanto, por mais que ali vc faça int i = x, esse comando só rodará uma vez, antes do primeiro laço.
Se você quer que essa atribução ocorra toda vez, terá que coloca-la na terceira parte do for também:
for(int i=x;x>0;i = --x){
olha soh o do ‘for’ nem sabia, pensei q era executado toda hora
qto ao l.read - ele le um int direto ?
como uso ele
agora se eu entro com valor 5 ele me retorna 16 e vai diminuindo…horrivel ehehe
obrigado pessoas por ajudarem.
class FAT{
public static void main(String args[]) throws Exception{
BufferedReader l = new BufferedReader(new InputStreamReader(System.in));
String t ;
int z=1,x;
System.out.println();
x=l.read();
//x=Integer.parseInt(t);
for(int i=x;x>0;i = --x){
z = z*x;
System.out.println("Z:"+z+"\nX:"+x+"\nI:"+i);
i--;
}