1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

duvida em java

Discussão em 'Programação' iniciada por ungah, 22 de Janeiro de 2009. (Respostas: 2; Visualizações: 516)

  1. ungah

    ungah Suspenso

    boas a todos. neste momento estou a fazer um programa que lê um certo numeros de valores entre -1000 e 1000 em que para terminar a escrita da sequencia o valor introduzido tem de ser o dobro do anterior e no fim escreve o nº de valores lidos, a soma dos valores lidos e quais os numeros que fizeram terminar a escrita. eu ja fiz tudo excepto a parte dos numeros k fizeram terminar a escrita. gostava que me ajudassem a resolver esta parte.
    tenho o seguinte:

    Código:
     
    int valor, valorant=0, cont=0, soma=0;
    boolean igual =false;
     
    do
    {
    valor=readInt("Insira valor: ");
    if (valor>=-1000 && valor <=1000 && valor!=0)
    {
    cont ++;
    soma = soma + valor;
    }
    if (valor==(2*valorant))
    igual =true;
    }
    while (igual==false);
     
    println();
    println("Escreveu "+cont+" numeros no intervalo [-1000;1000].");
    println("A soma de todos os numeros escritos entre [-1000;1000] é: "+soma);
    println("Os valores que forçaram a paragem da escrita foram o "+valorant+" e o "+valor+".");
    
     
    Última edição pelo moderador: 22 de Janeiro de 2009
  2. nasic

    nasic Power Member

    Podes ter duas variáveis para guardar o valor actual e o anterior. Depois é so imprimir estas.
    Outra solução é guardares todos os valores num arraylist de inteiros, quando terminar imprimes o ultimo e penúltimo

    EDIT: Reparei agora que já lá tens as variáveis valor e valorant e imprimes no fim.O que precisas mais?
    EDIT2: Confesso que nem tinha olhado bem para o teu codigo. Tinhas vários erros.

    Aqui tens uma solução possível:
    Código:
    import java.util.Scanner;
    
    
    public class Testa {
    
        public static void main (String[] args) {
    
            Scanner leitor = new Scanner (System.in);
            int valor=0, valorant=0, cont=0, soma=0;
            boolean igual =false;        
    
            do
            {
                valorant = valor;
                System.out.println("Insira valor: ");
                valor=leitor.nextInt();
                if (valor>=-1000 && valor <=1000 && valor!=0)
                {
                    cont ++;
                    soma = soma + valor;
                }
                if (valor==(2*valorant))
                    igual =true;
            } while (igual==false);
    
            
            System.out.println("\nEscreveu "+cont+" numeros no intervalo [-1000;1000].");
            System.out.println("A soma de todos os numeros escritos entre [-1000;1000] é: "+soma);
            System.out.println("Os valores que forçaram a paragem da escrita foram o "+valorant+" e o "+valor+".");
        }
    }
    Não deveria estar a colocar a solução final aqui, porque é má politica. Normalmente as pessoas tendem a copiar e nem sequer olhar para o q estão a escrever. Testa e compreende o código, só assim consegues aprender :P
     
    Última edição: 22 de Janeiro de 2009
  3. ungah

    ungah Suspenso

    obrigado. ja consegui. foi o que eu fiz. li o teu codigo e depois de o entender adaptei o meu a minha maneira e funcionou. obrigado :)
     

Partilhar esta Página