Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何显示所有回文和所有素回文_Java_Arrays_Palindrome - Fatal编程技术网

Java 如何显示所有回文和所有素回文

Java 如何显示所有回文和所有素回文,java,arrays,palindrome,Java,Arrays,Palindrome,好的,我几乎完成了这个程序,但我需要它显示从100到“用户输入”的所有回文,以及该列表中的所有主回文。到目前为止,我只能让它显示所有的主要回文 public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Please enter a number greater than 100: "); int userInput = input.nextInt()

好的,我几乎完成了这个程序,但我需要它显示从100到“用户输入”的所有回文,以及该列表中的所有主回文。到目前为止,我只能让它显示所有的主要回文

public static void main(String[] args)
{
    Scanner input = new Scanner(System.in);
System.out.print("Please enter a number greater than 100: ");
int userInput = input.nextInt();

    if(userInput <= 100)
    {
        System.out.print("That number is not big enough, please enter a "
                + "number greater than 100");
    }
    else
    {
        System.out.println("The Prime Palindrome Integer between 101"
                + " and " + userInput + " are: ");
    }

for (int i = 101; i <= userInput; i++)
    {
        Integer userInt = new Integer(i);
        String userString = userInt.toString();
        char[] userChar = userString.toCharArray();

        if (isPrime(i) && arraysAreEqual(userChar, reverseArray(userChar)))
        {
            printArray(userChar);
            System.out.print(", ");
        }
    }
}

public static char[] reverseArray(char[] list)
{
    String reverse = new StringBuilder(new String(list)).reverse().toString();

char[] revArray = reverse.toCharArray();
    return revArray;
}

public static boolean arraysAreEqual(char[] list1, char[] list2)
{
    if (Arrays.equals(list1, list2) )
    return true;
    else return false;
}

public static boolean isPrime(int intPrime)
{
for (int i = 2; i < Math.sqrt(intPrime); i++)
    {
        if (intPrime % i == 0)        
        return false;
    }
return true;
}

public static void printArray(char[] list)
{
for (int i = 0; i < list.length ; i++)
    {
        System.out.print(list[i]);
}
}
publicstaticvoidmain(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
System.out.print(“请输入大于100的数字:”);
int userInput=input.nextInt();

如果(userInputOk,那么下面是对代码的几个更改:

首先,您需要稍微更改循环,以便将元素添加到两个列表中,一个包含素数,另一个不包含素数

    List<Integer> primes = new ArrayList<>(), nonPrimes = new ArrayList<>();

    for (int i = 101; i <= userInput; i++)
    {
        Integer userInt = new Integer(i);
        String userString = userInt.toString();
        char[] userChar = userString.toCharArray();

        if (arraysAreEqual(userChar, reverseArray(userChar)))
        {
            nonPrimes.add(i);
            if(isPrime(i))
            {
                primes.add(i);
            }
        }
    }
    printArray(nonPrimes);
    System.out.println(); //Added to include a new line
    printArray(primes);

就是这样。

从您的问题可以看出,您需要分别存储回文和素回文。因此,我建议您可以声明2个
ArrayList
变量,如
回文
素回文
,如下所示:

  ArrayList<String> palindrome = new ArrayList<>();
  ArrayList<String> primePalindrome = new ArrayList<>();
与:

最后删除函数调用
printary()
,您可以编写此代码以在
for
循环之后打印输出

System.out.println("The Non prime palindromes are :");
for(String str:palindrome){
   System.out.println(str);
}


System.out.println("The prime palindromes are :");
for(String str:primePalindrome){
   System.out.println(str);
}
完成可运行代码 我发布这个完整的可运行代码仅仅是因为你说你无法理解我所说的。我已经实现了上面所述的所有内容。运行它,你就会得到你的结果

import java.util.*;
import java.io.*;

public class test1{
    static ArrayList<String> palindrome = new ArrayList<>();
    static ArrayList<String> primePalindrome = new ArrayList<>();
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.print("Please enter a number greater than 100: ");
        int userInput = input.nextInt();

        if(userInput <= 100){
            System.out.print("That number is not big enough, please enter a "
                    + "number greater than 100");
        }else{
            System.out.println("The Prime Palindrome Integer between 101"
                    + " and " + userInput + " are: ");
        }

        for (int i = 101; i <= userInput; i++){
            Integer userInt = new Integer(i);
            String userString = userInt.toString();
            char[] userChar = userString.toCharArray();
            if (arraysAreEqual(userChar, reverseArray(userChar))){
                if(isPrime(i)){
                    primePalindrome.add(userString);
                }else{
                    palindrome.add(userString);
                }
            }
        }

        System.out.println("The Non prime palindromes are :");
        for(String str : palindrome){
            System.out.println(str);
        }


        System.out.println("The prime palindromes are :");
        for(String str : primePalindrome){
            System.out.println(str);
        }
    }

    public static char[] reverseArray(char[] list){
        String reverse = new StringBuilder(new String(list)).reverse().toString();

        char[] revArray = reverse.toCharArray();
        return revArray;
    }

    public static boolean arraysAreEqual(char[] list1, char[] list2){
        if (Arrays.equals(list1, list2) )
            return true;
        else return false;
    }

    public static boolean isPrime(int intPrime){
        for (int i = 2; i < Math.sqrt(intPrime); i++){
            if (intPrime % i == 0)        
                return false;
        }
        return true;
    }

}
import java.util.*;
导入java.io.*;
公共类test1{
静态ArrayList palindrome=新ArrayList();
静态ArrayList primePalindrome=新ArrayList();
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.print(“请输入大于100的数字:”);
int userInput=input.nextInt();

如果(userInput主要回文只是所有回文的子集。你的意思是你必须打印两个列表吗?是的,很抱歉。我需要打印所有回文,然后再打印所有主要回文。可能是@JFPicard的副本我不同意。另一篇文章可能是互补的,但我不相信它是重复的我已经更正了我下面的答案,请检查一下。我认为这会很好。结果是“非素回文是:”后面跟着“素回文是:”一遍又一遍地重复,每次重复结束时都是数字。而不是“非素回文是:”后面跟着所有的数字,和“主要回文是:"后面是所有的数字。@campbellj21很抱歉,这个打印函数应该放在
for
循环之后。我在回答中也做了同样的更正。现在它由于某种原因被卡在无限循环中。它怎么能进入无限循环?我正在发布代码以更改可能我使用了错误的术语,对不起,我是个傻瓜。When如果我在NetBeans中运行程序,它只会一直尝试在没有输出的情况下运行。
    if (arraysAreEqual(userChar, reverseArray(userChar))){
       if(isPrime(i)){
          primePalindrome.add(userString);
       }else{
          palindraome.add(userString);
       }
    }
System.out.println("The Non prime palindromes are :");
for(String str:palindrome){
   System.out.println(str);
}


System.out.println("The prime palindromes are :");
for(String str:primePalindrome){
   System.out.println(str);
}
import java.util.*;
import java.io.*;

public class test1{
    static ArrayList<String> palindrome = new ArrayList<>();
    static ArrayList<String> primePalindrome = new ArrayList<>();
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.print("Please enter a number greater than 100: ");
        int userInput = input.nextInt();

        if(userInput <= 100){
            System.out.print("That number is not big enough, please enter a "
                    + "number greater than 100");
        }else{
            System.out.println("The Prime Palindrome Integer between 101"
                    + " and " + userInput + " are: ");
        }

        for (int i = 101; i <= userInput; i++){
            Integer userInt = new Integer(i);
            String userString = userInt.toString();
            char[] userChar = userString.toCharArray();
            if (arraysAreEqual(userChar, reverseArray(userChar))){
                if(isPrime(i)){
                    primePalindrome.add(userString);
                }else{
                    palindrome.add(userString);
                }
            }
        }

        System.out.println("The Non prime palindromes are :");
        for(String str : palindrome){
            System.out.println(str);
        }


        System.out.println("The prime palindromes are :");
        for(String str : primePalindrome){
            System.out.println(str);
        }
    }

    public static char[] reverseArray(char[] list){
        String reverse = new StringBuilder(new String(list)).reverse().toString();

        char[] revArray = reverse.toCharArray();
        return revArray;
    }

    public static boolean arraysAreEqual(char[] list1, char[] list2){
        if (Arrays.equals(list1, list2) )
            return true;
        else return false;
    }

    public static boolean isPrime(int intPrime){
        for (int i = 2; i < Math.sqrt(intPrime); i++){
            if (intPrime % i == 0)        
                return false;
        }
        return true;
    }

}