Problemas com Arrays

Olá, tudo beleza? Veja bem eu já tentei de várias formas , mas não conseguir fazer com que o programa lê-se os numeros digitados para um array de inteiros.

import java.io.IOException;

public class Contador
{
    public Contador() throws IOException
    {
        int[] v = null;
        int i;
        
        System.out.println("\nDigite 6 números:");
        
        for(i = 0; i < 6; i++)
        {
            int read = System.in.read();
            v[i] += read;
        }
        
        System.out.println("\nNúmeros digitados:");
        
        for(i = 0; i < 6; i++)
        {
            System.out.print(v[i]);
        }
    }
    public static void main(String args[]) throws IOException
    {
        new Contador();
    }
}

O que há de errado neste código? Existe alguma dica de como melhora-lo?
Desde já agradeço! :smiley:

bom, se vc tirar esse código do construtor da classe e aprender a declarar o tamanho de um array em java… fica legal.

http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html

Veio, além de fazer isso que o peczenyj aconselhou, vc deve estudar Entrada e Saida em Java. Esse código ta ruinzinho…hehe.

int v[] = new int[6];

deve resolver o seu problema

dois erros fundamentais:

  1. O array não foi inicializado.
  2. Vc está tentando somar o valor de entrada com o valor contido no array quando vc deveria
    estar atribuindo o valor directamente
v[i] += read; // errado

v[i] = read; // certo 

Vc pode argumentar que o valor de v[i] é zero e que somando vai dar no mesmo.
Na prática sim, mas em termos de escrita de codigo não. A primeira forma não é clara nem eficiente
Só complica o entendimento. E um bom entendimento do codigo é vital para descobrir bugs.

Um outro erro , na minha opinião, é colocar codigo de I/O num construtor.
Isso é estremamente feio e pode gerar erros absurdos.

Não custa nada colocar o codigo num método à parte ou então deixar direto no main, já que é apenas um teste

Cara além das opções que o pessoal te mostrou tem esta outra que deixa o usuário digitar quantos valores quiser, falta realizar alguns ajustes.

System.out.println("\nDigite 6 números:");

		InputStreamReader isr = new InputStreamReader(System.in);
		BufferedReader terminal = new BufferedReader(isr);
		String s = terminal.readLine();

		System.out.println("\nNúmeros digitados:");

		for (int i = 0; i < s.length(); i++) {
			System.out.print(s.charAt(i));
		}

flw…

[quote=juniormaverick]Cara além das opções que o pessoal te mostrou tem esta outra que deixa o usuário digitar quantos valores quiser, falta realizar alguns ajustes.

System.out.println("\nDigite 6 números:");

		InputStreamReader isr = new InputStreamReader(System.in);
		BufferedReader terminal = new BufferedReader(isr);
		String s = terminal.readLine();

		System.out.println("\nNúmeros digitados:");

		for (int i = 0; i < s.length(); i++) {
			System.out.print(s.charAt(i));
		}

flw…[/quote]

juniormaverick é o seguinte, eu gostei dessa sua dica, mas o que eu quero é popular um array e depois exibir o seu conteúdo:

import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;

public class Contador
{
    public static void main(String args[])throws IOException{
        InputStreamReader leitor = new InputStreamReader(System.in);
        BufferedReader console = new BufferedReader(leitor);
        int num[] = new int[6];
        
        for(int i = 0; i < 6; i++){
            System.out.print("\nDigite o número:");
            num[i] = console.read();
        }
        
        System.out.print("\nNúmeros digitados: ");
        for(int i = 0; i < 6; i++){
            System.out.print(num[i]);
        }
    }
}

Cara, pelo menos vc utilizou parte do que fiz para mudar a sua, viu como melhorou…flw…

rsrsrs… ta dando isso na saída do console.

Digite o número:
21

Digite o número:
Digite o número:
Digite o número:
3

Digite o número:
Digite o número:
2

Números digitados: 504910511050

estranho não?

Cara tente usar a classe Scanner:

Scanner scan = new Scanner(System.in);
int num[] = new int[6];  
     
   for(int i = 0; i < 6; i++){  
       System.out.print("\nDigite o número:");  
       num[i] = scan.nextInt();  
   }  
     
   System.out.print("\nNúmeros digitados: ");  
       for(int i = 0; i < 6; i++){  
           System.out.print(num[i]);  
       }   

assim da certo!

Vlwsssssss :lol:

[quote=juniormaverick]Cara além das opções que o pessoal te mostrou tem esta outra que deixa o usuário digitar quantos valores quiser, falta realizar alguns ajustes.

System.out.println("\nDigite 6 números:");

		InputStreamReader isr = new InputStreamReader(System.in);
		BufferedReader terminal = new BufferedReader(isr);
		String s = terminal.readLine();

		System.out.println("\nNúmeros digitados:");

		for (int i = 0; i < s.length(); i++) {
			System.out.print(s.charAt(i));
		}

flw…[/quote]

como vc nao vai utilizar a variavel leitor… citado aqui como isr… voce pode por direto na linha de baixo… q ficaria assim:

BufferedReader console = new BufferedReader(new InputStreamReader(System.in));

com isso vc nao fica salvando objetos inuteis na memoria… claro q em uma aplicaçao pequena isso nao interfere… porem em uma aplicacao grande isso pode ser ruim

[quote=aquilante]Cara tente usar a classe Scanner:

Scanner scan = new Scanner(System.in);
int num[] = new int[6];  
     
   for(int i = 0; i < 6; i++){  
       System.out.print("\nDigite o número:");  
       num[i] = scan.nextInt();  
   }  
     
   System.out.print("\nNúmeros digitados: ");  
       for(int i = 0; i < 6; i++){  
           System.out.print(num[i]);  
       }   

assim da certo!

Vlwsssssss :lol: [/quote]

Valew, meu brother, dessa forma eu conseguir.

Eu conseguir assim:

import java.io.IOException;
import java.util.Scanner;

public class Contador
{
    public static void main(String args[])throws IOException{
        Scanner console = new Scanner(System.in);
        int num[] = new int[6];
        int cont1 = 0, cont2=0, cont3 = 0;
        
        for(int i = 0; i < 6; i++){
            System.out.print("\nDigite o número:");
            num[i] = console.nextInt();
        }
        
        System.out.print("\nNúmeros digitados: ");
        
        for(int i = 0; i < 6; i++){
            System.out.print(num[i] + " ");
        }
        
        System.out.print("\n\nSequencia ao contrário: ");
        
        for(int i = 5; i >= 0; i--){
            System.out.print(num[i] + " ");
            if(num[i] >= 0)
                if(num[i] % 2 == 0)
                    cont1++;
            else
                cont3++;
            if(num[i] < 0)
                cont2++;
        }
    }
}

Valeu galera!!!