所以我是comp sci的第一年学生,我必须创建一个程序,让一个数组扰乱它,然后再对它进行排序。我几乎让它工作,但由于某种原因,我的一个while循环将无法工作,并完全被绕过。我真的很陌生,所以所有的帮助都表示赞赏。我排序,打印工作,争抢只是给我一些麻烦。
import java.io.*;
import java.util.Random;
public class Driver03
{
public static void main(String[] args)
{
int[] array = {100, 101, 102, 103, 104, 105, 106, 107, 108, 109};
print(array);
array = scramble(array);
print(array);
array = sort(array);
print(array);
}
public static void print(int[] apple)
{
for(int x = 0; x < apple.length; x++){
System.out.println(apple[x]+"");
}
}
public static int max;
public static int maxIndex;
public static int temp;
public static int[] sort(int[] grape)
{
for(int y = grape.length; y > 0; y--){
for(int x = 0; x < y; x++)
if (x==1){
if (grape[x] > grape[x-1]){
max = grape[x];
maxIndex = x;
}
else{
max = grape[x-1];
maxIndex = x - 1;
}
}
else{
if (grape[x] > max){
max = grape[x];
maxIndex = x;
}
}
temp = grape[maxIndex];
grape[maxIndex] = grape[y-1];
grape[y-1] = temp;
}
return grape;
}
public static int temp1;
public static boolean t;
public static boolean u;
public static int[] numbers;
public static int[] tangerine;
public static int[] scramble(int[] orange)
{
numbers = new int[10];
tangerine = new int[10];
Random rand=new Random();
for(int x = 0; x < orange.length; x++){
t=false;
while (t=false){ //For some reason being bypassed
int randn = rand.nextInt(9);
for(int y = 0; y < numbers.length; y++){
if (numbers[x]==randn)
u = true;
}
if (! (u==true))
{
numbers[randn] = randn;
tangerine[randn] = orange[x];
t = true;
}
}
}
return tangerine;
}
}
答案 0 :(得分:6)
t=false
将值false
分配给t
并评估为新值。因此,您刚刚撰写了while (false)
。
比较平等时,您需要使用==
。
但是,对于布尔值,使用while (!t)
的风格要好得多。由于缺少第二个=
,因此更具可读性且不太可能出错。
答案 1 :(得分:2)
一个等号:x = 4
用于为变量赋值。
两个等号:x == 6
用于测试变量是否等于值。
if语句中的某些语法是非正统的。
这很奇怪
if (! (u==true))
您可以改用:
if (!u)
更好的是,您可以使用描述性变量名称,使其更具可读性:
if (!found) {
shuffleItems();
}
请注意它的可读性:如果找不到,则随机播放项目。
现在你的代码记录了自己!
答案 2 :(得分:0)
使用:
while (! t){
请记住使用==来比较值:)