Duvida em Java

sky312

Power Member
boas, eu tenho uma duvida neste exercicio,"Calcule a soma de todos os números de 1 até um valor inserido pelo o utilizador"
Código:
int i, n, soma=0, count=1;
        System.out.println("Introduza um valor inteiro para o limite:");
        n=Keyboard.readInt();
        
        do{
        i=(int)(Math.random()*n);
        System.out.println(+i);
        soma=soma+i;
        count++;
        }while(count<=n);
        System.out.println("Soma="+soma);
Este é um exemplo de uma maneira mas com um resultado aleotorio, ñ fui eu que escrevi, eu queria saber como é que faco por exemplo definir o limite em 4, logo a soma seria 1+2+3+4=10
 
Última edição:
Lógico que é aleatório então se tens ali um random no i.
Não percebi porque tens ali um random e depois perguntas porque razão está a dar valores aleatórios, não foste tu que escreveste o código certo?
Assim sem muita coisa eu faria um ciclo for de 1 até n e depois ia somando o i à soma, só isso.
Com o while também dá, com a diferença que tens de incrementar o i manualmente (ou count no teu caso).
 
boas, eu ñ consigo fazer com um ciclo for continua a aparecer apenas o valor que eu digito, sera que alguem pode dizer como é o codigo? obg
 
Qual é o problema que tens? Posta aqui o teu código.

Código:
int soma = 0;
for (int i = valor; i > 0; i--) {
soma = soma + i;
}
System.out.println("Resultado: " + soma);

Ou então como disse o cdgoncalves.
 
boas, eu ñ consigo fazer com um ciclo for continua a aparecer apenas o valor que eu digito, sera que alguem pode dizer como é o codigo? obg

E não consegues porquê?
A "complicação" desse exercício, passa pelo for, just it.
Depois é só fazer um system.out.println a pedir o número, ler, e depois no fim, imprimir o resultado.

Coloca o código e ajudamos-te nas dúvidas.
 
Código:
int soma = 0;
for (int i = valor; i > 0; i--) {
soma = soma + i;
}
System.out.println("Resultado: " + soma);
obg pelo o codigo , eu ñ estva a conseguir criar um codigo que permitisse somar tudo, ou seja eu punha o valor 4, o que o meu programa fazia era so 3+4, so conseguia fazer a soma do numero anterior ao que digitava, a questao era mesmo eu ñ conseguir escrever bem o programa pk estava na duvida do que por na condicao do for(), ja agora podem.me explicar como é que este codigo funciona(o codigo permite fazer o factorial de um número)? ñ estou a conseguir analisar o codigo :x
Código:
int x,fact=1;
        System.out.println("Insira um número:");
            x=Keyboard.readInt();
        
        do{
            --x;
            fact=fact*(1+x);
            
        }
        while(x>0);
        System.out.println(fact);
 
Ora bem isso faz o factorial de x

Como deves saber o factorial de um número natural n é o produto de todos os inteiros positivos menores ou iguais a n.

O programa percorre todos os numeros multiplicando-os pelo resultado anterior. Importante: a variavel fact tem que ser inicializada a 1 poeque caso fosse 0 o resultado seria 0, já que 0 "vezes" qualquer numero é 0.

Exemplo:
para x = 5
ele faz

(x=5 -> x=4): fact = fact * 5 -> fact = 1*5 -> fact = 5
(x=4 -> x=3): fact = fact * 4 -> fact = 5*4 -> fact = 20
(x=3 -> x=2): fact = fact * 3 -> fact = 20*3 -> fact = 60
(x=2 -> x=1): fact = fact * 2 -> fact = 60*2 -> fact = 120
(x=1 -> x=0): fact = fact * 1 -> fact = 360*1 -> fact = 120
sai fora do ciclo.

Esse codigo ficava mais correcto assim:
Código:
int x,fact=1;
        System.out.println("Insira um número:");
        x=Keyboard.readInt();
        
        do{
            fact=fact*(x);
            x--;            
        }
        while(x>1);
        System.out.println(fact);
 
Última edição:
Obrigado pela a explicação agora ja entendi perfeitamente o que faz muito obrigado mais uma vez rj123 :D.Cumps
 
Última edição:
Boas pessoal, tenho mais uma duvida(como é habitual xD), eu quero construir um vector com nomes, e quero mostrar o nome com maior comprimento ao utilizador, so que ñ sei como é que faco isso aqui tem o codigo
Código:
int q;
        
        System.out.println("Quantos nomes quer inserir?");
        q=Keyboard.readInt();
        
        String[] nomes = new String[q];
        
        for(int i=0;i<q;i++){
            System.out.println("O "+(i+1)+"º nome é:");
            nomes[i]=Keyboard.readString();
        }
        System.out.print("\nOs nomes são: ");
        for(int i=0;i<q;i++){
            System.out.print("\n"+nomes[i]);
        }
        System.out.println("\nOs comprimentos dos nomes são:");
        for(int i=0;i<q;i++){
            if(nomes[i].length()>nomes[i].length())
                System.out.println("\n"+nomes[i].length());
        
        
        }
este if é uma tentativa frustada de tentar selecionar o maior mas ñ funciona
 
Boas pessoal, tenho mais uma duvida(como é habitual xD), eu quero construir um vector com nomes, e quero mostrar o nome com maior comprimento ao utilizador, so que ñ sei como é que faco isso aqui tem o codigo
Código:
int q;
        
        System.out.println("Quantos nomes quer inserir?");
        q=Keyboard.readInt();
        
        String[] nomes = new String[q];
        
        for(int i=0;i<q;i++){
            System.out.println("O "+(i+1)+"º nome é:");
            nomes[i]=Keyboard.readString();
        }
        System.out.print("\nOs nomes são: ");
        for(int i=0;i<q;i++){
            System.out.print("\n"+nomes[i]);
        }
        System.out.println("\nOs comprimentos dos nomes são:");
        for(int i=0;i<q;i++){
            if(nomes[i].length()>nomes[i].length())
                System.out.println("\n"+nomes[i].length());
        
        
        }
este if é uma tentativa frustada de tentar selecionar o maior mas ñ funciona

Estás a fazer comparações com os mesmos valores.

Código:
public String nomeMaior (String[] array) {
        String nome = "";
        for (int i = 0; i < array.length; i++) {
            if (nome.length() < array[i].length())
                nome = array[i];
        }
        return nome;
    }
Esta função calcula o nome com maior comprimento dado o array
 
Back
Topo