1

我是java的初学者,我不明白为什么这不起作用。我正在尝试编写一个将基数为 10 的数字转换为二进制数字的程序,但我遇到了 ArrayList 的问题。我不能使用 ArrayList 的 add 方法:

import java.util.ArrayList;
import java.util.Scanner;

public class DecimalToBinary {
public static void main (String[] args){
    Scanner reader = new Scanner (System.in);

    System.out.println("This program converts a decimal number to binary.");

    int decimal;
    ArrayList<int[]> binary = new ArrayList<int[]>();

    //Gets decimal number
    System.out.print("Enter base 10 number: ");
    decimal = reader.nextInt();

    //Adds 1 to binary and then adds the remainders of decimal/2 after that until decimal is 1 
    binary.add(1, null);
    while (decimal != 1){
        binary.add(1, decimal%2);//This is where I get the error
        decimal = decimal/2;
    }//Ends While loop
}//Ends main

}//结束 DecimalToBinary 类

4

2 回答 2

1

在这条线上:

ArrayList<int[]> binary = new ArrayList<int[]>();

您声明 ArrayList 将仅包含 int 类型的数组。换句话说,存储在“二进制”中的每个对象都将是一个 int 数组。

所以,当你写:

binary.add(1, decimal % 2);

您正在尝试将 'decimal % 2' 添加到二进制的位置 1。因为 decimal % 2 是一个 int,而不是一个 int 数组,所以会出现编译器错误。

将二进制的声明更改为:

ArrayList<Integer> binary = new ArrayList<Integer>();
于 2013-03-26T14:21:44.193 回答
0
ArrayList <Integer> binary = new ArrayList <Integer>();

binary.add(3);
于 2013-03-26T13:39:49.687 回答