• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

jamirooo

mais noobices....

6 mensagens neste tópico

:wallbash:

boas!o objectivo é criar um programa que dado um numero inteiro n crie um vector de inteiros com os seus divisores  por exemplo n=6 o vector é {1,2,3,6}.

o que eu fiz foi:

import java.util.Scanner;

public class vector15 {


public static void main(String[] args) {

	System.out.println("Introduza um inteiro:");

	Scanner scanner = new Scanner (System.in);

	int n = scanner.nextInt();

	int [] v;
	for(int i=0;i<=n;i++)
		if(n%i==0){
		v = new int [i];

	System.out.println(v);

		}


}
}

e nao esta a dar... :P ajudem por favor

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

v = new int [i];

O que esta linha faz é instanciar um vector de interios com o tamanho definido por i; Ou seja, cada vez que encontras um número que é divisor de n estás a criar um novo vector com o tamanho que i tiver

System.out.println(v);

Com esta linha estás a tentar imprimir o quê? É que mandaste imprimir o objecto v, dado que não implementaste o método toString do objecto, provavelmente não vais ver nada de útil.

for(int i=0;i<=n;i++)

Quer dizer que a primeira operação é uma divisão por zero... numa divisão de inteiros podes dividir por zero?

Como é que esta excepção te falhou? Isto é, como é que uma excepção a dizer: "java.lang.ArithmeticException: / by zero" te escapou tão facilmente?

Corrige esse pontos e vês se já consegues obter o resultado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok...ja corrigi a cena do 0...e ja nao me da erro...mas agora a duvida é como ver o que esta no vector?como disses-te com S.O.P nao da...entao como faço?obrigado pela ajuda :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

3 alternativas de implementação:

private void implementacao1() {

        System.out.println("Introduza um inteiro: ");
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();

        Vector<Integer> v = new Vector<Integer>();
        v.add(1);//todo o numero e' divisivel por 1
        for (int i = 2; i <= n; i++) { //se todo o numero e' divisivel por 1 nao e' preciso testar o 1
            if (n % i == 0) {
                v.add(i);
            }
        }

        for (Integer z : v) {
            System.out.println(z);
        }
    }

    private void implementacao2() {
        System.out.println("Introduza um inteiro: ");
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();

        Vector v = new Vector();
        v.add(new Integer(1));
        for (int i = 2; i <= n; i++) {
            if (n % i == 0) {
                v.add(new Integer(i));
            }
        }

        for (int z = 0; z < v.size(); z++) {
            System.out.println(v.get(z));
        }
    }

    private void implementacao3() {
        System.out.println("Introduza um inteiro: ");
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();

        int[] v = new int[(n / 2) + 1];//será que existem mais divisores que metade de n
        //o 1 e' especial 1/2 = 0, logo da' jeito ter pelo menos uma posicao valida no vector 
        v[0] = 1;
        for (int indice = 0,  i = 2; i <= n; i++) {
            if (n % i == 0) {
                v[indice] = i;
                indice++;
            }
        }

        for (int z = 0; z < v.length; z++) {
            if (v[z] != 0) {
                System.out.println(v[z]);
            }
        }
    }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A 3ª implementação é mais parecida com C, a 2ª é Java 1.4, a 3ª é Java 5, a forma como implementas depende do que pretendes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora