使用来自ifstatement的输入在java中打印数组
请帮我打印这些阵列。在“IsPrime”方法中,它测试输入是否为素数,并将它们存储在数组“prime[]”中。我将其设置为一个很大的数组,因为我不可能知道输入将获得的确切素数,对于“palin”数组也是如此。在最后一个for循环中,我试图打印素数数组的结果,但我得到的输出不是素数。我收到“0000000000”谢谢
import java.util.Scanner;
import java.util.Arrays;
public class p1c {
private static Scanner scan;
public static void main(String[] args){
scan = new Scanner(System.in);
int z;
for(z = 0; z<2; z++){
System.out.println("\n Please enter the first integer number:" );
int numx = scan.nextInt();
System.out.println("Please enter the second integer number");
int numy = scan.nextInt();
if ( numx < numy){
isPrime(numx,numy);
}
else{
System.out.print("This is invalid, try again, x must be less than y");
System.exit(0);
}
}
}
public static int reverse(int i){
int reverse = 0;
while (i!= 0){
reverse = reverse * 10;
reverse = reverse + i % 10;
i = i/10;
}
return reverse;
}
public static void isPrime(int numx, int numy){
int d = 0,c;
int prime[] = new int[50];
int palin[] = new int[50];
for (int i=numx; i <= numy; i++ ){
for (c=2; c<i; c++){
int n = i%c;
if (n==0){
break;
}
}
if(i == c && i != 0 && c != 0){
prime[i]=i;
}
if( reverse(i)== i){
int palindrome = i;
palin[palindrome]= palindrome;
}
}
for(int count = 0; count < prime.length;count ++){
d++;
System.out.print(prime[count]);
if(d == 10){
System.out.println();
d=0;
}
}
}
}
# 1 楼答案
我认为你的问题与你选择阵列有关。所以,当你打印出数组的内容时,它会打印50个元素——大部分是0,因为这是你初始化它的结果
改用
List<Integer>
。如:List <Integer> prime = new ArrayList<Integer> () ;
然后在if条件下,当找到素数时,执行
prime.add(i);
打印列表内容时,使用
prime.size()
表示循环上限,打印内容时使用prime.get(count)