Java 如何显示所有回文和所有素回文
好的,我几乎完成了这个程序,但我需要它显示从100到“用户输入”的所有回文,以及该列表中的所有主回文。到目前为止,我只能让它显示所有的主要回文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()
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;
}
}