Problemas com um exercicio

4 respostas
T

Estou estudando Java a pouquissimo tempo, no fim do Cap 2 do livro teve dois exercicios que me causaram certos problemas

O primeiro problema e o primeiro exercicio:

Construa um programa que seja capaz de apresentar a soma de todos os argumentos inteiros ou reais recebidos. Argumentos inválidos devem ser desconsiderados, sem provocar a exibição de erros ou exceções.

Então fiz este programa

import java.util.Scanner;
public class Somatorio {
    public static void main (String args[]) {
        int Cont =1; double somatorio = 0.0;
        System.out.println("Quantos numeros voce vai inserir? ");

        Scanner alpha = new Scanner(System.in);
        int valor = alpha.nextInt();
      
        while (valor >= Cont ) {
            System.out.println("Digite o "+Cont+" numero");
            Scanner beta = new Scanner(System.in);
            double numero = beta.nextDouble();
            somatorio = somatorio + numero;
            Cont++;
         }
        System.out.println("A soma é: "+somatorio);
       }    
}

Mas nao sei um jeito de fazer com que os argumentos invalidos sejam desconsiderados , sem provocar a exibição de erros ou exceções.

O segundo é este

É desejado um programa que seja capaz de imprimir no console o valor por extenso de um número inteiro recebido como argumento. O valor recebido deve estar dentro do intervalo [0, 49] .Valores maiores ou menores devem ser desconsiderados e uma mensagem apropriada deve ser exibida.

enttão fiz este codigo:

import java.util.Scanner;
public class NumeroExtenso {
    static public void main (String args[]) {

       try {
        System.out.println("Digite um numero inteiro entre 0 e 49");
        Scanner alpha = new Scanner(System.in);
        int valor  = alpha.nextInt();

        if ((valor < 0) || (valor > 49))
            System.out.println("Numero nao aceito");
        else {
            if (valor == 1)
                System.out.println("Um");
            if (valor==2)
                System.out.println("Dois");       
        }
       }
         catch (Exception e) {
               System.out.println("Dado Inválido");

Dai minha duvida eh a seguinte, eu ter que continuar fazendo if's ate chegar no "valor==49" ou tem algum outro jeito pra fazer isso de modo mais optimizado?

Gostaria de pedir que caso alguem se interessasse em ajudar que estou no começo dos meus estudos, nao aprendi ainda sobre conceitos de POO e apenas aprendi sintaxe no que se refere a if-else, for, while, do while, thy, catch finnaly, arranjos, matrizes, switch, break, continue, então soluções um pouco "complexas" nao me sirviria mt ja que eu nao as entederias, se é que ttem soluçoes complexas para isso, creio que nao :-o

4 Respostas

gpd38
import java.util.Scanner;

public class NumeroExtenso {

    static public void main(String args[]) {
        try {
            String numeros_base[] = {"", "Um", "Dois", "Três", "Quatro", "Cinco", "Seis", "Sete", "Oito", "Nove"};
            String numeros_intermediarios[] = {"Dez", "Onze", "Doze", "Treze", "Quatorze", "Quinze", "Dezesseis", "Dezessete", "Dezoito", "Dezenove"};

            System.out.println("Digite um numero inteiro entre 0 e 49");
            Scanner alpha = new Scanner(System.in);
            int valor = alpha.nextInt();
            String tam = valor + "";

            //Estou separando a faixa de numeros atraves do tamanho da string
            //1 ou 2 caracteres e acessando os vetores para dar a resposta
            if (tam.length() == 2) {
                switch (valor / 10) {
                    case 1:
                        System.out.println(numeros_intermediarios[valor % 10]);
                        break;
                    case 2:
                        System.out.println("Vinte " + numeros_base[valor % 10]);
                        break;
                    case 3:
                        System.out.println("Trinta " + numeros_base[valor % 10]);
                        break;
                    case 4:
                        System.out.println("Quarenta " + numeros_base[valor % 10]);
                        break;
                }//switch
                } else {
                if (valor % 10 == 0) {
                    System.out.println("Zero");
                } else {
                    System.out.println(numeros_base[valor % 10]);
                }
            }
        } catch (Exception e) {
            System.out.println("Dado Inválido");
        }
    }
}
T

o que seria essa parte do codigo

[code] if (tam.length() == 2) { [/code ]

???? o que faz

romarcio
thiago_258_:
o que seria essa parte do codigo

[code] if (tam.length() == 2) { [/code ]

???? o que faz

Vc tem uma string -> String tam = valor + "";

Esse trecho testa o tamanho da string tam. Se Vc digitar 15, sua string será de tamanho 2, se digitar 5, será de tamanho 1.

romarcio

Você ainda pode colocar isso:

default:
           System.out.println("Valor inválido, não está entre o intervalo 0 - 49.");

abaixo do ultimo break; do case 4, dai quando qualquer numero digitado for maior que 49, lança a mensagem.

Criado 26 de fevereiro de 2010
Ultima resposta 27 de fev. de 2010
Respostas 4
Participantes 3