Estou sou novo em Java, estou querendo adicionar um valor (de tamanho de 1 Byte) em cada linha de uma matriz, o valor viria de uma string (vira de uma porta serial), mas no momento estou testando via teclado, o objetivo e extrair cada valor de uma string de 8 digitos ASCII.
packageprojeto;importjava.util.Scanner;publicclassDinamico{publicstaticvoidmain(Stringargs[]){byte[]buffer=newbyte[8];System.out.println("Entre com o numero: ");Scannersc=newScanner(System.in);bytex=sc.nextByte();for(inti=7;i>0;i--){buffer[i]=x;}System.out.println(buffer[0]);System.out.println(buffer[1]);System.out.println(buffer[2]);System.out.println(buffer[3]);System.out.println(buffer[4]);System.out.println(buffer[5]);System.out.println(buffer[6]);System.out.println(buffer[7]);}}
Valeu pela ajuda @ViniGodoy. Apenas tive que substituir o
for(inti=0.i<num.length; i++) {
por
for(inti=0; i < num.length(); i++) {
Os números lidos estão aparecendo na codificação ASCII (1 = 49, 2 = 50…etc), mas isso é fácil de resolver bastando diminuir de 48 ( que é igual a 0 em numeral).
Gostaria de saber se tem alguma propriedade para transformar parte da String em um inteiro valido.
Meu codico é de 8 dígitos, os trés últimos compõem um valor de 1 ate 999.
Obrigado
ViniGodoy
Use o método Integer.parseInt para converter uma String num inteiro.
E use o método substring da String para extrair um pedaço da String.
Por exemplo
String teste = "ABC1234CDE";
int numero = Integer.parseInt(teste.substring(3, 4));
rafael.luc
Ok consegui fazer
publicclassDinamico{publicstaticvoidmain(Stringargs[]){System.out.println("Entre com o numero: ");Scannersc=newScanner(System.in);Stringnum=sc.nextLine();bytereadBuffer[]=num.getBytes();StringnumBytes=newString(readBuffer);if(0<numBytes.length()){intid=Integer.parseInt(numBytes.substring(0,1));intfuncao=Integer.parseInt(numBytes.substring(1,2));inttag=Integer.parseInt(numBytes.substring(2,4));intvalor=Integer.parseInt(numBytes.substring(4,7));System.out.println(id);System.out.println(funcao);System.out.println(tag);System.out.println(valor);}}}
No codico acima eu poderia colocar a String (num) lida do teclado diretamente na substring o que ficou um tanto estranho ou desnecessário, mas os dados virão de porta serial que precisa de um Buffer, precisa ver como iria ficar usando o teclado. O codico real a ser implementado segue abaixo.