我正在尝试将布尔数组的所有索引打印出其元素为true的位置。最终目标是能够找到索引的质数(在此,我将数组中不是素数的每个索引号都更改为false),然后仅打印出数组索引的质数剩余的数
我要做的第一步是至少要打印出一些整数索引,但似乎没有任何效果,我也不知道这是怎么回事。 / p>
public class PriNum{
private boolean[] array;
public PriNum(int max){
if (max > 2){ //I don't have any problems with this if statement
throw new IllegalArgumentException();
}
else{
array = new boolean[max];
for(int i = 0; i < max; i++){
if(i == 0 || i == 1){ //Automatically makes 0 and 1 false
//because they are not prime
array[i] = false;
}
else{
array[i] = true;
}
}
toString(); //I know for sure the code gets to here
//because it prints out a string I have
// there, but not the index
}
}
public String toString(){
String s = "test"; //this only prints test so I can see if
//the code gets here, otherwise it would just be ""
for (int i = 0; i < array.length; i++){
if(array[i] == true){
s = s + i; //Initially I tried to have the indexes returned
//to be printed and separated by a comma,
//but nothing comes out at all, save for "test"
}
}
return s;
}
}
编辑:包括请求打印PriNum类的驱动程序类
class Driver{
public static void main(String [] args){
PriNum theprime = null;
try{
theprime = new PriNum(50);
}
catch (IllegalArgumentException oops){
System.out.println("Max must be at least 2.");
}
System.out.println(theprime);
}
}
答案 0 :(得分:1)
我尝试运行此命令,需要进行的第一个更改是设置此参数:
if(max < 2)
然后,如果我没看错的话:0和1为假。此后的每个索引都是正确的。如我所见,输出很好。只是所有数字都被整理成一个连续的列表。
要获得更好的输出,请在索引之间放置一个空格:
if(array[i] == true){
s = s + " " + i;
}
您甚至可以直接以
的形式输出到屏幕上if(array[i])
System.out.print( i );
答案 1 :(得分:0)
数字被初始化而没有声明,数组被声明但没有在代码中的任何地方初始化。在array [i] = true之后,您还会遇到语法错误,应该大括号...