Vetor de inteiros

Oláa, sou novo por aki, e estou aprendendo java agora!
tenho um trabalhinho pra fazer mais naum to conseguindo sabe nem por onde começar!
sera qi vcs poderim me dar algumas dicas!

esse é o enunciado do trabalhoo!

  1. Crie uma classe chamada VetorDe5Inteiros, que internamente possui um vetor de 5 inteiros (int). Implemente métodos para:
    a) Receber os 5 valores (pode ser o construtor);
    b) Retornar a soma dos elementos;
    c) Retornar o valor do maior elemento;
    d) Retornar a posição do menor elemento;
    e) Retornar o N-ésimo elemento;
    f) Verificar se o número X existe na lista.

obrigado.

A primeira coisa a fazer é criar esta classe (inicialmente como um esqueleto), com o atributo que é o vetor, o construtor e os métodos inicialmente vazios.

Feito isso, comece a preenchê-los.

[quote=marcelofameg]Oláa, sou novo por aki, e estou aprendendo java agora!
tenho um trabalhinho pra fazer mais naum to conseguindo sabe nem por onde começar!
sera qi vcs poderim me dar algumas dicas!

esse é o enunciado do trabalhoo!

  1. Crie uma classe chamada VetorDe5Inteiros, que internamente possui um vetor de 5 inteiros (int). Implemente métodos para:
    a) Receber os 5 valores (pode ser o construtor);
    b) Retornar a soma dos elementos;
    c) Retornar o valor do maior elemento;
    d) Retornar a posição do menor elemento;
    e) Retornar o N-ésimo elemento;
    f) Verificar se o número X existe na lista.

obrigado.
[/quote]

Cara sou iniciante em Java também ma isso sei fazer.

Primeiramente é so criar um vetor de 5 posições…

int [] vetor = new int[5]

Depois você cria alguma forma de atribuição dos valores em algum método ou no construtor. Pode perguntar para o usuário usando JOptionPane ou você mesmo atribuir (lembrando que vetor de 0 a X e não de 1 a X).
Para perguntar 5 vezes o valor é so criar uma estrutura de repetição e ir atribuindo, por exemplo:

for (i=0; i<5;i++){ vetor[i] =Integer.parseInt( JOptionPane.ShowMessageDialog(null,"Entre com o valor de " +i)); }

Depois precisa comparar cada elemento, e se ele for maior que o outro armazenar em alguma variável.
Por exemplo:

if (vetor[i]>vetor[i+1]){ variavel = vetor[i]; }

Com isso você vai ter o maior valor entrado armazenado

Para retornar a posição do menor é parecido:

if (vetor[i]<vetor[i+1]){ variavel2 = i; }

Retornar o último é so você printar a ultima posição do vetor.

E para comparar vai ter que fazer uma estrutura de repetição comparando o valor entrado com cada valor do vetor.

Lembrando que cada uma dessas tarefas são metodos diferentes de acordo com seu enunciado.

Não se incomode muito com a linguagem e aprenda a programar, adquirir um raciocínio lógico. O exercício e seu professor são para isso, fazer você aprender, não adianta vir ao fórum perguntar, não te ajuda em nada a não ser entregar o trabalho (se é que você realmente tá preocupado).

Dambros!!

desculpa não entendi qual a verificação vc fez nos IF’s.
Obs. Estou aprendendo tbm.

[quote=mr.zanini]Dambros!!

desculpa não entendi qual a verificação vc fez nos IF’s.
Obs. Estou aprendendo tbm.
[/quote]

Cara eu coloquei ao contrário o valor, o certo seria:

if (vetor[i]>vetor[i-1]){ variavel = vetor[i]; }

Assim ele compara o vetor da iteração com o anterior, mas pensando melhor isso não vai dar certo.

O ideal seria algo desse tipo:

variavel = vetor[0]; for(int i =0; i<5; I++{ if(vetor[i]>variavel){ variavel = vetor[i]; } }
Nesse código acima ele vai armazenar a posição inicial do vetor em uma variavel, supondo que ela é a maior. depois ira percorrer o vetor inteiro e verificar se cada passagem é maior que o valor armazenado. Caso seja, ela irá armazenar novamente. E dessa forma a variavel sempre terá o maior valor do vetor.

E para fazer o contrário de obter o menor valor é so fazer a mesma coisa, invertendo o sentido da comparação. Pois de o valor da iteração do momento for menor que o valor armazenado, ele substitui esse valor.

Perdão belo erro grotesco de lógica que cometi anteriormente, escrevi meio que correndo, o que não justifica, mas enfim…

[code]public class VetorDe5Inteiros {
public static void main(String[] args) {
int[] vetor = new int[5];
int i;
int somaElementos = 0;
int menor = 0;
int maior = 0;
try {
for (i = 0; i < 5; i++) {
vetor[i] = (int) (Math.random() * 100);
somaElementos = vetor[i] + somaElementos;
System.out.print(vetor[i] + " ");
}
System.out.println();
menor = vetor[4];
maior = vetor[0];
for (i = 0; i < 5; i++) {
if (vetor[i] < menor)
menor = vetor[i];
}
for (i = 0; i < 5; i++) {
if (vetor[i] > maior)
maior = vetor[i];
}

		System.out.println("MENOR \n" + menor);
		System.out.println("MAIOR \n" + maior);
		System.out.println("SOMA \n" + somaElementos);
		System.out.println("ULTIMA POSICAO \n" + vetor[4]);
		System.out.println("PRIMEIRA POSICAO \n" + vetor[0]);
	} catch (Exception e) {
		System.out.println("ERRO");
	}
}

}
[/code]

Olha mano… eu juntei um pouco do seu cod, e um pouco do que eu já aprendi… saiu assim…
dá uma olhada.

[code]# }

for (i = 0; i < 5; i++) { [code]

hehehe descobri que o for da linha 21 é desnecessário…

[quote=mr.zanini][code]public class VetorDe5Inteiros {
public static void main(String[] args) {
int[] vetor = new int[5];
int i;
int somaElementos = 0;
int menor = 0;
int maior = 0;
try {
for (i = 0; i < 5; i++) {
vetor[i] = (int) (Math.random() * 100);
somaElementos = vetor[i] + somaElementos;
System.out.print(vetor[i] + " ");
}
System.out.println();
menor = vetor[4];
maior = vetor[0];
for (i = 0; i < 5; i++) {
if (vetor[i] < menor)
menor = vetor[i];
}
for (i = 0; i < 5; i++) {
if (vetor[i] > maior)
maior = vetor[i];
}

		System.out.println("MENOR \n" + menor);
		System.out.println("MAIOR \n" + maior);
		System.out.println("SOMA \n" + somaElementos);
		System.out.println("ULTIMA POSICAO \n" + vetor[4]);
		System.out.println("PRIMEIRA POSICAO \n" + vetor[0]);
	} catch (Exception e) {
		System.out.println("ERRO");
	}
}

}
[/code]

Olha mano… eu juntei um pouco do seu cod, e um pouco do que eu já aprendi… saiu assim…
dá uma olhada.[/quote]

Cara sinceramente não entendi o pq de tratar exceção em um programa simples assim, mesmo pq a exceção nem acontece. E se vc quer seguir bem o enunciado, a unica diferença seria utilização de métodos. De resto ta sussa.

puxa… na facul o professor ensina a tratar sempre o erro…
pensei que precisasse…

[quote=mr.zanini]puxa… na facul o professor ensina a tratar sempre o erro…
pensei que precisasse…[/quote]

Sinceramente é exatamente o contrário. Pode perguntar para outras pessoas, o correto é tentar não ficar tratando exceções a não ser que elas sejam mesmo necessárias, pois o correto é você consertar o código para que ele não fique dando a exceção.

No começo eu tambem tentava usar exceção em tudo, ainda mais depois que descobri o eclipse e que ele fazia isso para mim com apenas alguns cliques. Hoje em dia tento tratá-las apenas quando seja imprescindível.

Muitas vezes o uso de exceção é comum quando você quer controlar algo do tipo:
Usuário realizada uma tarefa de forma incorreta, isso gera um erro. Para que o programa não feche, você trata a exceção isolando-a e dessa forma faz com que o programa continue sendo executado.

E acima você mencionou que o FOR da linha 21 era desnecessário. Realmente, você fez 2 FOR com o mesmo tamanho, então é mais simples implementar os IF dentro de um único FOR.

Mas posso estar enganado, como falei acima sou principiante em java.

[quote=dambros][quote=mr.zanini]puxa… na facul o professor ensina a tratar sempre o erro…
pensei que precisasse…[/quote]

Sinceramente é exatamente o contrário. Pode perguntar para outras pessoas, o correto é tentar não ficar tratando exceções a não ser que elas sejam mesmo necessárias, pois o correto é você consertar o código para que ele não fique dando a exceção.

No começo eu tambem tentava usar exceção em tudo, ainda mais depois que descobri o eclipse e que ele fazia isso para mim com apenas alguns cliques. Hoje em dia tento tratá-las apenas quando seja imprescindível.

Muitas vezes o uso de exceção é comum quando você quer controlar algo do tipo:
Usuário realizada uma tarefa de forma incorreta, isso gera um erro. Para que o programa não feche, você trata a exceção isolando-a e dessa forma faz com que o programa continue sendo executado.

Mas posso estar enganado, como falei acima sou principiante em java.[/quote]

Você está enganado. Basicamente, existem três tipos de exceções em java: As que herdam de RuntimeException, as que herdam de Exception mas não de RuntimeException e as que herdam de Error.

RuntimeExceptions indicam erros de programação, tal como NullPointerException, ArrayIndexOutOfBoundsException, ClassCastException, NumberFormatException.

Errors indicam problemas graves (e geralmente imprevisíveis e intratáveis) para os quais geralmente não há conserto, tal como OutOfMemoryError, StackOverflowError, NoClassDefFoundError, NoSuchMethodError, ExceptionInInitializerError, AssertionError. Podem indicar erros de programação graves.

Já as Exceptions são os erros previstos, e essas o compilador vai exigir que você trate adequadamente. Essas tem origem em operações que podem falhar por coisas que não dependem do programa e nem de condições extremas, ou seja, podem acontecer mesmo se a lógica do programa estiver perfeita e este estiver íntegro.
Exemplos são SQLException, IOException, InvocationTargetException, SocketException, FileNotFoundException.

Por exemplo, uma operação de salvar algo em um arquivo é normal, mas mesmo com a lógica do programa perfeita, vai dar um IOException se o disco estiver cheio. O fato de IOException herdar de Exception faz com que o compilador exija que você trate essa exceção (porque indica uma situação que embora anormal, pode acontecer de vez em quando).

Daí é para isso que você usa o try-catch principalmente:

public void salvarDadosNoArquivo(AlgumObjeto dados) {
    OutputStream os = blablabla;
    try {
        // Faz um monte de coisas com o arquivo.
    } catch (IOException e) {
        // Mostra uma mensagem indicando que o salvamento falhou e o motivo.
    } finally {
        try {
            os.close();
        } catch (IOException e) {
            // Faz algo para tratar.
        }
    }
}

Então, no geral exceções que herdem de Exception, mas não de RuntimeException DEVEM ser tratadas. Para tratar a exceção ou você usa o try-catch, ou então lança ela para o método que a chamou. Existe um lugar certo para tratar exceções que depende de cada caso (cada caso é um caso). Tratar ela muito abaixo ou muito acima pode criar dificuldades para tomar-se ações corretivas e/ou obter-se informações suficientes sobre a falha.

Ah, e também há o encadeamento de exceções, que faz com que você veja que a VendaNaoAutorizadaException foi causada por uma ClienteEmDebitoException que foi causada por uma SQLException. Isso permite você ter a informação das falhas em todos os níveis do sistema afetados por elas, sem perder informação sobre o porque de sua ocorrência.

[quote=victorwss][quote=dambros][quote=mr.zanini]puxa… na facul o professor ensina a tratar sempre o erro…
pensei que precisasse…[/quote]

Sinceramente é exatamente o contrário. Pode perguntar para outras pessoas, o correto é tentar não ficar tratando exceções a não ser que elas sejam mesmo necessárias, pois o correto é você consertar o código para que ele não fique dando a exceção.

No começo eu tambem tentava usar exceção em tudo, ainda mais depois que descobri o eclipse e que ele fazia isso para mim com apenas alguns cliques. Hoje em dia tento tratá-las apenas quando seja imprescindível.

Muitas vezes o uso de exceção é comum quando você quer controlar algo do tipo:
Usuário realizada uma tarefa de forma incorreta, isso gera um erro. Para que o programa não feche, você trata a exceção isolando-a e dessa forma faz com que o programa continue sendo executado.

Mas posso estar enganado, como falei acima sou principiante em java.[/quote]

Você está enganado. Basicamente, existem três tipos de exceções em java: As que herdam de RuntimeException, as que herdam de Exception mas não de RuntimeException e as que herdam de Error.

RuntimeExceptions indicam erros de programação, tal como NullPointerException, ArrayIndexOutOfBoundsException, ClassCastException, NumberFormatException.

Errors indicam problemas graves (e geralmente imprevisíveis e intratáveis) para os quais geralmente não há conserto, tal como OutOfMemoryError, StackOverflowError, NoClassDefFoundError, NoSuchMethodError, ExceptionInInitializerError, AssertionError. Podem indicar erros de programação graves.

Já as Exceptions são os erros previstos, e essas o compilador vai exigir que você trate adequadamente. Essas tem origem em operações que podem falhar por coisas que não dependem do programa e nem de condições extremas, ou seja, podem acontecer mesmo se a lógica do programa estiver perfeita e este estiver íntegro.
Exemplos são SQLException, IOException, InvocationTargetException, SocketException, FileNotFoundException.

Por exemplo, uma operação de salvar algo em um arquivo é normal, mas mesmo com a lógica do programa perfeita, vai dar um IOException se o disco estiver cheio. O fato de IOException herdar de Exception faz com que o compilador exija que você trate essa exceção (porque indica uma situação que embora anormal, pode acontecer de vez em quando).

Daí é para isso que você usa o try-catch principalmente:

public void salvarDadosNoArquivo(AlgumObjeto dados) {
    OutputStream os = blablabla;
    try {
        // Faz um monte de coisas com o arquivo.
    } catch (IOException e) {
        // Mostra uma mensagem indicando que o salvamento falhou e o motivo.
    } finally {
        try {
            os.close();
        } catch (IOException e) {
            // Faz algo para tratar.
        }
    }
}

Então, no geral exceções que herdem de Exception, mas não de RuntimeException DEVEM ser tratadas. Para tratar a exceção ou você usa o try-catch, ou então lança ela para o método que a chamou. Existe um lugar certo para tratar exceções que depende de cada caso (cada caso é um caso). Tratar ela muito abaixo ou muito acima pode criar dificuldades para tomar-se ações corretivas e/ou obter-se informações suficientes sobre a falha.

Ah, e também há o encadeamento de exceções, que faz com que você veja que a VendaNaoAutorizadaException foi causada por uma ClienteEmDebitoException que foi causada por uma SQLException. Isso permite você ter a informação das falhas em todos os níveis do sistema afetados por elas, sem perder informação sobre o porque de sua ocorrência.[/quote]

Mas ao menos no sentido de não tratar exceções desnecessárias estava certo ne?

Senão so falei besteira pro cara.

Exceções bem explicadas…

O tratamento de exceções é coisa séria. Em geral, uma exceção nunca deve ser ignorada.

Mais alguns artigos sobre exceções:


http://blog.caelum.com.br/2006/10/07/lidando-com-exceptions/

Mesmo as exceções de Runtime devem ser tratadas, na pior das hipóteses com um UncaughtExceptionHandler para loga-las em arquivo e você poder analisar quando seu usuário ligar reclamando de um bug.

[quote=dambros]Mas ao menos no sentido de não tratar exceções desnecessárias estava certo ne?

Senão so falei besteira pro cara.[/quote]

Normalmente não. Mas em alguns casos sim. Por exemplo:

int idade = 0;
try {
    idade = Integer.parseInt(JOptionPane.showInputDialog("Quantos anos você tem"))?
} catch (NumberFormatException e) {
    JOptionPane.showInputDialog("Po cara, você é chato! Era para você digitar um número!");
}

[quote=victorwss][quote=dambros]Mas ao menos no sentido de não tratar exceções desnecessárias estava certo ne?

Senão so falei besteira pro cara.[/quote]

Normalmente não. Mas em alguns casos sim. Por exemplo:

int idade = 0; try { idade = Integer.parseInt(JOptionPane.showInputDialog("Quantos anos você tem"))? } catch (NumberFormatException e) { JOptionPane.showInputDialog("Po cara, você é chato! Era para você digitar um número!"); } [/quote]

Esse foi exatamente o tipo de exemplo ao qual eu me referi naquele post. Como sou iniciante peguei exceções somente desse tipo, e algumas de I/O, nada além.

Pô obrigadoo ae pelas dicas!
estão me ajudando bastante!

valeu

alguém pode ajudar na parte de retornar o n-ésimo elemento?