Vetor de bytes?

6 respostas
java
C

Sei que o algoritmo abaixo é algo que não sei faz mais praticamente, uma vez que temos a classe Scanner e podemos utilizar swing etc. Mas pra fins de estudo, resolvi fazer desta maneira. O mesmo está compilando e trazendo o resultado esperado. Só tenho uma dúvida que deixei no comentário do código:

import java.io.IOException;

public class C03AlgoritmoTeste
{
 	
 	public static void main (String[] args) throws IOException{

 		byte[] byte_num1 = new byte[50];
 		byte[] byte_num2 = new byte[50];
 		//por que não posso declarar os dois vetores de byte acima assim:
 		//byte[] byte_num1, byte_num2 = new byte[50];
 		//por que tem que ser um new pra cada um?
 		System.out.print("Digite o primeiro número: ");
 		System.in.read(byte_num1);
 		System.out.print("Digite o segundo número: ");
 		System.in.read(byte_num2);
 		String num1 = new String(byte_num1).trim();
 		String num2 = new String(byte_num2).trim();
 		int media = (Integer.parseInt(num1) + Integer.parseInt(num2))/2;
 		System.out.println("A média é: " + media);
 	}
}

6 Respostas

J
byte[] b1 = new byte[50], b2 = new byte[50];
B

Cada variável byte_num1 e byte_num2 irá fazer referência para o seu objeto próprio objeto array de 50 elementos.

C

Show.

Entendi. Eu sou obrigado a dar new pra cada variável mas não preciso declarar o tipo mais de uma vez na mesma linha.

Obrigado.

S

Você poderia fazer assim, mas essa forma não é recomendada pois não é tão legível:

byte byte_num1[], byte_num2[] = new byte[50];

Além do mais, dessa forma ambas a variáveis irão referenciar o mesmo objeto e não é o que você quer.
Lembrando que arrays, mesmo de tipos primitivos, são objetos.

R

Mas neste caso, somente byte_num2 está sendo inicializado.

S

É verdade, viajei legal. :stuck_out_tongue:

Criado 3 de maio de 2017
Ultima resposta 4 de mai. de 2017
Respostas 6
Participantes 5