如何判断数组值的序列是否回文?
How to determine if the sequence of array values is palindromic?
编写一个程序,将取 10 个整数并将它们存储在一个数组中。该程序应测试数字序列是否为回文序列。这意味着它向前读取与向后读取相同。这里有两个例子:
请输入 10 个整数: [1|2|3|7|7|7|7|3|2|1]
序列是回文的。
请输入 10 个整数: [1|2|3|7|7|7|7|2|3|1]
序列不是回文。
我的代码是:
import java.util.Scanner;
public class problem4 {
public static void main (String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Please type 10 integers:");
int[] num = new int[10];
int[] reverse = new int[10];
for (int a = 0; a < num.length; a++) {
num[a] = scan.nextInt();
}
int b = 0;
int c = 9;
while (c != 0) {
reverse[c] = num[b];
c--;
b++;
if (c == 0) break;
}
if (num[0] == reverse[9] && num[1] == reverse[8] && num[2] == reverse[7] && num[3] == reverse[6] && num[4] == reverse[5])
System.out.println("The sequence is palindromic.");
else
System.out.println("The sequence is not palindromic.");
}
}
但是没有构建消息,无论我输入什么,它总是说序列是回文的。
你可以通过迭代数组的一半来简化这个(如果 num[a]
不等于 num[num.length - a - 1]
它不是回文)。像,
Scanner scan = new Scanner(System.in);
System.out.println("Please type 10 integers:");
int[] num = new int[10];
for (int a = 0; a < num.length; a++) {
num[a] = scan.nextInt();
}
boolean isPalindrome = true;
for (int a = 0; a <= num.length / 2; a++) {
if (num[a] != num[num.length - a - 1]) {
isPalindrome = false;
break;
}
}
if (isPalindrome) {
System.out.println("The sequence is palindromic.");
} else {
System.out.println("The sequence is not palindromic.");
}
我测试过(按照说明)喜欢
Please type 10 integers:
1 2 3 7 7 7 7 3 2 1
The sequence is palindromic.
和
Please type 10 integers:
1 2 3 7 7 7 7 2 3 1
The sequence is not palindromic.
不需要使用倒序数组来比较元素。
在您的代码中试试这个:
public static void main (String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Please type 10 integers:");
int[] num = new int[10];
int[] reverse = new int[10];
for (int a = 0; a < num.length; a++) {
num[a] = scan.nextInt();
}
if (num[0] == num[9] && num[1] == num[8] && num[2] == num[7]
&& num[3] == num[6] && num[4] == num[5])
System.out.println("The sequence is palindromic.");
else
System.out.println("The sequence is not palindromic.");
您可以创建一个简单的方法并传递数组来检查回文。
.......主要从这里开始
Scanner scan = new Scanner(System.in);
System.out.println("Please type 10 integers:");
int[] num = new int[10];
int[] reverse = new int[10];
for (int a = 0; a < num.length; a++) {
num[a] = scan.nextInt();
}
System.out.println(palin(num));
.......主要内容到此结束
和 class
中的方法
你基本上把数组分成两个 1 2 3 7 7 <----> 7 7 3 2 1
并检查 front 是否与 back 相同,first 是起始索引,prev 是最后一个索引。
public static String palin(int[] arr){
int prev, first;
boolean tr = true;
for(first = 0, prev = arr.length-1; first < arr.length/2; prev--,first++){
if(arr[first] != arr[prev]){
tr = false;
break;
}
}
return tr ? "Is a palindromic":"Not palindromic";
}
all together
import java.util.Scanner;
public class problem4 {
public static void main (String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Please type 10 integers:");
int[] num = new int[10];
int[] reverse = new int[10];
for (int a = 0; a < num.length; a++) {
num[a] = scan.nextInt();
}
System.out.println(palin(num));
}
public static String palin(int[] arr){
int prev, first;
boolean tr = true;
for(first = 0, prev = arr.length-1; first < arr.length/2; prev--,first++){
if(arr[first] != arr[prev]){
tr = false;
break;
}
}
return tr ? "Is a palindromic":"Not palindromic";
}
}
编写一个程序,将取 10 个整数并将它们存储在一个数组中。该程序应测试数字序列是否为回文序列。这意味着它向前读取与向后读取相同。这里有两个例子:
请输入 10 个整数: [1|2|3|7|7|7|7|3|2|1]
序列是回文的。
请输入 10 个整数: [1|2|3|7|7|7|7|2|3|1]
序列不是回文。
我的代码是:
import java.util.Scanner;
public class problem4 {
public static void main (String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Please type 10 integers:");
int[] num = new int[10];
int[] reverse = new int[10];
for (int a = 0; a < num.length; a++) {
num[a] = scan.nextInt();
}
int b = 0;
int c = 9;
while (c != 0) {
reverse[c] = num[b];
c--;
b++;
if (c == 0) break;
}
if (num[0] == reverse[9] && num[1] == reverse[8] && num[2] == reverse[7] && num[3] == reverse[6] && num[4] == reverse[5])
System.out.println("The sequence is palindromic.");
else
System.out.println("The sequence is not palindromic.");
}
}
但是没有构建消息,无论我输入什么,它总是说序列是回文的。
你可以通过迭代数组的一半来简化这个(如果 num[a]
不等于 num[num.length - a - 1]
它不是回文)。像,
Scanner scan = new Scanner(System.in);
System.out.println("Please type 10 integers:");
int[] num = new int[10];
for (int a = 0; a < num.length; a++) {
num[a] = scan.nextInt();
}
boolean isPalindrome = true;
for (int a = 0; a <= num.length / 2; a++) {
if (num[a] != num[num.length - a - 1]) {
isPalindrome = false;
break;
}
}
if (isPalindrome) {
System.out.println("The sequence is palindromic.");
} else {
System.out.println("The sequence is not palindromic.");
}
我测试过(按照说明)喜欢
Please type 10 integers:
1 2 3 7 7 7 7 3 2 1
The sequence is palindromic.
和
Please type 10 integers:
1 2 3 7 7 7 7 2 3 1
The sequence is not palindromic.
不需要使用倒序数组来比较元素。
在您的代码中试试这个:
public static void main (String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Please type 10 integers:");
int[] num = new int[10];
int[] reverse = new int[10];
for (int a = 0; a < num.length; a++) {
num[a] = scan.nextInt();
}
if (num[0] == num[9] && num[1] == num[8] && num[2] == num[7]
&& num[3] == num[6] && num[4] == num[5])
System.out.println("The sequence is palindromic.");
else
System.out.println("The sequence is not palindromic.");
您可以创建一个简单的方法并传递数组来检查回文。
.......主要从这里开始
Scanner scan = new Scanner(System.in);
System.out.println("Please type 10 integers:");
int[] num = new int[10];
int[] reverse = new int[10];
for (int a = 0; a < num.length; a++) {
num[a] = scan.nextInt();
}
System.out.println(palin(num));
.......主要内容到此结束 和 class
中的方法你基本上把数组分成两个 1 2 3 7 7 <----> 7 7 3 2 1
并检查 front 是否与 back 相同,first 是起始索引,prev 是最后一个索引。
public static String palin(int[] arr){
int prev, first;
boolean tr = true;
for(first = 0, prev = arr.length-1; first < arr.length/2; prev--,first++){
if(arr[first] != arr[prev]){
tr = false;
break;
}
}
return tr ? "Is a palindromic":"Not palindromic";
}
all together
import java.util.Scanner;
public class problem4 {
public static void main (String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Please type 10 integers:");
int[] num = new int[10];
int[] reverse = new int[10];
for (int a = 0; a < num.length; a++) {
num[a] = scan.nextInt();
}
System.out.println(palin(num));
}
public static String palin(int[] arr){
int prev, first;
boolean tr = true;
for(first = 0, prev = arr.length-1; first < arr.length/2; prev--,first++){
if(arr[first] != arr[prev]){
tr = false;
break;
}
}
return tr ? "Is a palindromic":"Not palindromic";
}
}