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! 
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:
- O array não foi inicializado.
- 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!!!