我有一个非常简单的下面代码,其中有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;
}
}
答案 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");
}
}
如果您向我们提供更多信息,我会更新答案