Я изучаю основы Java
, и, кажется, есть наблюдение, я не могу разобраться.
Ниже приведен код, который должен печатать двоичный файл реализация числа base10
. Там нет ошибок или предупреждений, но логические аномалии я ищу ответы.
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;
public class Main
{
private static final Scanner scanner = new Scanner(System.in);
public static void main(String args[]) {
int n = scanner.nextInt();
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
int remainder, quotient, i=0;
int[] binary=new int[n];
/* Binary division -Extracting the 1's and 0's out of the base10 number and storing it in binary[] */
while(n!=0){
remainder=n%2;
quotient=n/2;
binary[i]=remainder;
n=quotient;
i++;
}
int k=i; // For storing the length of array till I want my bits to be reversed since all other bits are initialized to 0.
/*Reversing the binary[] to get the coreect binary value.*/
for(int j=0; j<=i; j++){
int temp=binary[j];
binary[j]=binary[i];
binary[i]=temp;
i--;
}
/*Printing out all the bits of binary number. */
for(int l=1;l<=k;l++){
System.out.print(binary[l]);
}
System.out.println(binary); /*Prints a garbage looking value: For ex- for 25 i get: [I@33909752 */
scanner.close();
}
}
Обеспокоенность по поводу моего кода:
1. Я не могу понять возможные рассуждения о том, почему я получаю случайное словосочетание, похожее на мусор, когда пытаюсь вывести переменную массива - binary
. Это что-то ожидается? Если так, что это?
Например:
В моем коде, когда я предоставляю ввод 25
, я получаю [I@33909752
при печати переменной binary
. Я ожидал что-то вроде [1,1,0,0,1,0,....,0]
2. Я получаю дополнительно 0
перед моим двоичным значением, если я запускаю for-loop
для печати binary
из 0
вместо 1
Например:
for(int l=1;l<=k;l++)
{
System.out.print(binary[l]);
}
Печать 11001
для 25
, но если я начну l oop с 0
, я получаю 011001
. Я проверил все остальные места кода, поместив операторы SOPLn, и нигде индекс массива 0
не получает 0. Интересно, почему?