Java Byte比较

时间:2014-01-07 22:17:11

标签: java

我有一个非常简单的下面代码,其中有2个变量:

ArrayList<Byte> randomArrayList = new ArrayList<Byte> (); 
Byte currentNumber;

两种字节类型。

为什么以下比较不起作用。虽然我从调试器检查它们是相同的,但它总是说两个数字都不同。

if (currentNumber.equals(randomArrayList.get(j)))

即使==也无效。

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;

    // This is a main business logic class
    public class LottoLogic {

        public ArrayList<Byte> generateSixNumbers()
        {
            ArrayList<Byte> randomArrayList = new ArrayList<Byte> (); 
            byte currentNumber;

            for(int i=0;i <6;i++)
            {

                currentNumber = generate();

                for (int j = i-1; j>=0; j--)
                {                  

                    if (currentNumber == (byte) ( randomArrayList.get(j)))
                    {               
                        do
                        {
                            currentNumber = generate();
                        }while(currentNumber != randomArrayList.get(j));
                    }

                }

                randomArrayList.add(currentNumber);

            }

            randomArrayList = sort (randomArrayList);
            return randomArrayList;
        }

//      public byte[] generateSixNumbersAsArray(){
//          byte[] myArrayList;
//          for (int i )
//          myArrayList[i] = 
//      }

        public byte generate()
        {
            byte randomNumber = (byte) ((Math.random()*48)+1);
            return randomNumber;
        }

        public ArrayList<Byte> sort (ArrayList<Byte> myList)
        {
            Collections.sort(myList);
            return myList;

        }

    }

2 个答案:

答案 0 :(得分:1)

以下是一些创建随机,非重复字节列表的代码。我认为这是您正在尝试的内容(编辑:假设generate()返回byte,而不是Byte

    ArrayList<Byte> myBytes = new ArrayList<Byte>();
    Byte currentByte = new Byte(generate());
    for(int i=0;i<10;i++) {
        while(myBytes.contains(currentByte)){
            currentByte=generate();
        }
        myBytes.add(currentByte);
    }
    for(Byte b : myBytes) {
        System.out.println(Byte.toString(b));
    }

答案 1 :(得分:0)

您没有向我们展示足够的代码。

我用你的例子来制作以下内容,其中有效

public static void main(String[] args)
{
    ArrayList<Byte> randomArrayList = new ArrayList<Byte>();
    Byte currentNumber;

    randomArrayList.add((byte) 12);
    currentNumber = 12;

    int j = 0;

    if (currentNumber.equals(randomArrayList.get(j)))
    {
        System.out.println("Equals");
    }
}

如果您向我们提供更多信息,我会更新答案