【问题标题】:printing an Array in java with inputs from if-statement使用 if 语句的输入在 java 中打印一个数组
【发布时间】:2016-02-18 19:47:56
【问题描述】:

拜托,我需要帮助打印这些数组。在方法“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;
          }
      }
   }                    
}

【问题讨论】:

  • 我建议您使用 IDE 中的格式化程序修复您的格式,我还建议您在调试器中单步调试您的代码以帮助调试您的代码。注意:即使010 是回文,您的程序也不会发现10 是回文。
  • 如果您使用的是 Eclipse,请尝试使用ctrl+shift+f 格式化您的代码(我想alt+ctrl+l 用于jetbrains)。当你这样做时,想想最能说明你问题的代码,并与我们分享。祝你好运。
  • 感谢您的帮助,尤其是格式化提示。关于回文的问题是我的错,我忘了提到它正在寻找一个素数和回文数。
  • 在您的问题中,您在哪里提到了回文?
  • 也给出预期的输入和输出。

标签: java arrays if-statement printing


【解决方案1】:

我认为您的问题与您选择数组有关。因此,当您打印出数组的内容时,它会打印 50 个元素 - 大部分是 0,因为这是您将其初始化为的内容。

请改用List&lt;Integer&gt;。例如: List &lt;Integer&gt; prime = new ArrayList&lt;Integer&gt; () ;

然后在你的 if 条件下,当找到一个素数时,执行prime.add(i);

打印列表内容时,使用prime.size()作为循环的上限,打印内容时使用prime.get(count)

【讨论】:

    【解决方案2】:

    如果有人想要或曾经有过这个糟糕的项目,这里是最终的工作代码!

    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 x = 0;
        int prime[] = new int[1000000];
        int palin[] = new int[500000];
    
        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;
    
            }
        }
        System.out.println("Prime:");
        for (int count = 0; count < prime.length; count++) {
    
            if (prime[count] != 0) {
                d++;
                System.out.print("\t" + prime[count]);
    
            }
    
            if (d == 10) {
    
                System.out.println();
                d = 0;
            }
    
        }
        System.out.println("\n palindromic Prime:");
        for (int counter = 0; counter < palin.length; counter++) {
    
            if (palin[counter] != 0) {
                x++;
                System.out.print("\t" + palin[counter]);
            }
    
            if (x == 10) {
    
                System.out.println();
                x = 0;
            }
        }
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多