Armazenar Int, Float, Long, Char em um array de Numbers
5 respostas
rafacyber
Pessoal estou com um problema meio besta, mas preciso saber se ha um meio de armazenar dados Integers, Double, Float em um array de Numbers pela class Scanner.
Pelo que entendi, a classe Scanner só lida com primitivos, será que eu preciso scanear estes dados com outra classe?
packagegenericos;importjava.lang.Number;importjava.util.Scanner;publicclassOrdenandoNumeros{publicstatic<E>voidprintArray(E[]inputArray){for(Eelement:inputArray){System.out.printf("\n "+element+" "+element.getClass());}}publicstaticvoidmain(Stringargs[]){Number[]numero={};Scannerinput=newScanner(System.in);for(intcont=0;cont<10;cont++){System.out.println("Digite um número por favor: ");// Eu insiraria o input aqui mas da erro.}System.out.println("Array Number contains: ");printArray(numero);}}
Então cara acho melhor vc usar algum list sei lá ArrayList…
Eles podem crescer dinamicamente
(como vc nunca sabe quantos valores o Scanner vai trazer),
e funcionam como um array anabolizado.
J
Jdanos
importjava.util.*;publicclassTestNumbers{ArrayList<Number>numbers=newArrayList();Scannerinp=newScanner(System.in);TestNumbers(){scanUser();}publicvoidscanUser(){while(true){System.out.println("Insira um INT");numbers.add(inp.nextInt());System.out.println("Insira um BYTE");numbers.add(inp.nextByte());toString();}}publicStringtoString(){for(inta=0;a<numbers.size();a++){System.out.println("Conteúdo");System.out.println(numbers.get(a));}returnnull;}}
O programa rola sim, mas o que eu quero, é montar um esquema em que o usuário não precisa se preocupar com o tipo de dado. O programa não precisaria pedir inserir o dado.
Bastaria o usuário inserir o número e o programa ordenaria os números em um array de double, outro de float, outro de double etc…
Existe um meio de reconhecer o tipo de dado como input.hasNextInt() no qual o java reconhece o dado mas não consegue inserir-lo…
rafacyber
Era muito mais simples do que eu imaginava…não sei porque devemos complicar tanto…enfim…agradeço a todos vocês.
Minha Solução:
packagegenericos;importjava.util.Scanner;publicclassMain{publicstaticvoidmain(Stringargs[]){int[]numInt=newint[10];double[]numDoub=newdouble[10];float[]numFloat=newfloat[10];intcont=0;Scannerinput=newScanner(System.in);System.out.println("Digite um número por favor: ");while(cont<9){if(input.hasNextInt()==true){System.out.println(input.hasNextInt());numInt[cont++]=input.nextInt();System.out.println("Inserido no array int");System.out.printf("\nContador: %d",cont);System.out.printf("\n\nDigite um número por favor: ");}elseif(input.hasNextDouble()){System.out.println(input.hasNextDouble());numDoub[cont++]=input.nextDouble();System.out.println("Inserido no array doub");System.out.printf("\nContador: %d",cont);System.out.printf("\n\nDigite um número por favor: ");}elseif(input.hasNextFloat()){System.out.println(input.hasNextFloat());numDoub[cont++]=input.nextFloat();System.out.println("Inserido no array float");System.out.printf("\nContador: %d",cont);System.out.printf("\n\nDigite um número por favor: ");}}System.out.println();for(intx=0;x<10;x++)System.out.printf("%d\t%f\t%f\n",numInt[x],numDoub[x],numFloat[x]);}}