Java 尝试使用整数数组求解回文
我正在编写一个程序,可以帮助我找到输入的数字是否是回文,但我正在尝试使用数组。我想知道这是否可能??如果可能的话,我做错了什么 我已经在我认为问题所在的地方标记了代码,但请随意提出任何建议 谢谢Java 尝试使用整数数组求解回文,java,arrays,palindrome,Java,Arrays,Palindrome,我正在编写一个程序,可以帮助我找到输入的数字是否是回文,但我正在尝试使用数组。我想知道这是否可能??如果可能的话,我做错了什么 我已经在我认为问题所在的地方标记了代码,但请随意提出任何建议 谢谢 import java.util.Scanner; public class palindrome { public static void main(String args[]) { int size = 10,i,j,flag=0; int num[] = new int[s
import java.util.Scanner;
public class palindrome
{
public static void main(String args[])
{
int size = 10,i,j,flag=0;
int num[] = new int[size];
Scanner sc = new Scanner(System.in);
System.out.println("Enter the size of the number ");
size = sc.nextInt();
System.out.println("Enter the number ");
for(i=0;i<size;i++)
{
num[i]=sc.nextInt();
}
i=size-1;
for(j=0;j<(size/2);j++,i--)
{
if(i>(size/2))
{
if(num[i]==num[j])
{
flag = 1;
}
}
}
if(flag==1)
{
System.out.println("The number is a palindrome");
}
else
System.out.println("The number is not a palindrome ");
}
}
import java.util.Scanner;
公共类回文
{
公共静态void main(字符串参数[])
{
int size=10,i,j,flag=0;
int num[]=新的int[size];
扫描仪sc=新的扫描仪(System.in);
System.out.println(“输入数字的大小”);
尺寸=sc.nextInt();
System.out.println(“输入编号”);
对于(i=0;iTry
public boolean isPalindrome(int[]num){
对于(int i=0;i
是的,这是可能的,而且,可以使用ArrayList
,String
-任何您喜欢的方法。为了写下正确的实现,首先分解您当前的解决方案:
现在,让我们实现isAlindrome()
:
private静态布尔值isAlindrome(int[]值){
if(null==值)
返回true;//TODO:或false,或引发异常
对于(int i=0;i
您的班级有几个问题:
- 首先,你没有检查一个数字是否是回文。你的算法有缺陷
- 第二,您要求输入一个大小,但最终用户输入它,但您自己不使用它,而是在数字数组中使用引入的值
你应该这样做
public class Palindrome {
private static boolean isPalindrome(int[] array) {
for (int i = 0, j = array.length-1; i < j; i++, j--) {
if (array[i] != array[j]) {
return false;
}
}
return true;
}
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
System.out.print("How many numbers do you want to enter? ");
int size = scanner.nextInt();
int[] numbers = new int[size];
for (int i = 0; i < size; i++) {
System.out.printf("Enter number %s: ", i+1);
numbers[i] = scanner.nextInt();
}
if (isPalindrome(numbers)) {
System.out.println("The number is a palindrome");
} else {
System.out.println("The number is not a palindrome");
}
}
}
公共类回文{
私有静态布尔isPalindrome(int[]数组){
对于(int i=0,j=array.length-1;i
检查回文的最简单、最直观的方法(imo)是通过递归。其思想很简单:
第一个字符和最后一个字符相同吗?
是删除第一个和最后一个字符,并检查新字符串的第一个和最后一个字符
否没有回文。
当输入仅为1char
时,它就微不足道了
请查看以下代码:
private void isPalindrome(String number){
if(number.length() == 1){
System.out.println("yes");
}else if(number.charAt(0) == number.charAt(number.length()-1)){
isPalindrome(number.substring(1, number.length()-1));
}else{
System.out.println("no");
}
}
使用以下各项进行测试:
isAlindrome(String.valueOf(232))
返回“是”
isAlindrome(String.valueOf(23))
返回“否”
当然,这也同样适用于数组
s。将参数替换为数组,并以相同的方式搜索索引。减少数组时,只需创建一个新的较小数组,而不包含前一个数组的第一个和最后一个索引。您的代码当前执行的操作是检查第一个和最后一个数字是否相等al并将其标记为回文。您应该检查它们是否不相等,然后从标记1转到标记0System.out.println(“输入数字的大小”);如果不是System.out.println(“输入数字:”);大小固定为10?非常感谢,伙计..真的你是对的!!!现在我意识到我做错了什么。非常感谢!!!虽然我的问题解决了,但我也会尝试一下..这将增加我的知识。谢谢!!!@Dmitry Bychenko有相同的解决方案,但有更多的用户输入验证和冗长,所以你应该看看他的回复定时往来
private static boolean isPalindrome(int[] value) {
if (null == value)
return true; //TODO: or false, or throw exception
for (int i = 0; i < value.length / 2; ++i)
if (value[i] != value[value.length - 1 - i])
return false;
return true;
}
public class Palindrome {
private static boolean isPalindrome(int[] array) {
for (int i = 0, j = array.length-1; i < j; i++, j--) {
if (array[i] != array[j]) {
return false;
}
}
return true;
}
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
System.out.print("How many numbers do you want to enter? ");
int size = scanner.nextInt();
int[] numbers = new int[size];
for (int i = 0; i < size; i++) {
System.out.printf("Enter number %s: ", i+1);
numbers[i] = scanner.nextInt();
}
if (isPalindrome(numbers)) {
System.out.println("The number is a palindrome");
} else {
System.out.println("The number is not a palindrome");
}
}
}
private void isPalindrome(String number){
if(number.length() == 1){
System.out.println("yes");
}else if(number.charAt(0) == number.charAt(number.length()-1)){
isPalindrome(number.substring(1, number.length()-1));
}else{
System.out.println("no");
}
}