Đây là bài tập kiểm tra tính đối xứng. Ở đây mình viết ra 2 trường hợp.
Ở trường hợp 1:khi cho số phần tử cần nhập xong thì bắt đầu nhập từng phần tử. Ở đây nó luôn bỏ qua phần tử đầu tiên.
Còn trường hợp thứ 2 lại ko.
Các bạn giải thích cho mình vs??
1.Sử dụng Scanner
Mã:
import java.util.*;
import java.io.*;
public class Demo1{
public static void main(String[] args) throws Exception{
Scanner scan=new Scanner(System.in);
Palindrom palindrom= new Palindrom();
String[] str=new String[20];
System.out.println("So phan tu can nhap");
int n;
n=scan.nextInt();
for(int i=0;i<n;i++){
System.out.println("Phan tu " +(i+1));
str[i]=scan.nextLine();
}
for(int i=0;i<n;i++){
if(palindrom.test(str[i])==true) System.out.print(str[i]);
}
}
}
class Palindrom{
public boolean test(String a){
boolean k=true;
for(int i=0;i<(int)a.length()/2;i++){
if(!a.substring(i,i+1).equals(a.substring(a.length()-i-1,a.length()-i))){
k=false;
break;
}
k=true;
}
return k;
}
}
2. Sử dụng BufferReader
Mã:
import java.util.*;
import java.io.*;
public class BT201{
public static void main(String[] args) throws Exception{
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
Scanner scan=new Scanner(System.in);
Palindrom palindrom= new Palindrom();
String[] str=new String[20];
System.out.println("So phan tu can nhap");
int n;
n=scan.nextInt();
for(int i=0;i<n;i++){
System.out.println("Phan tu " +(i+1));
str[i]=input.readLine();
}
for(int i=0;i<n;i++){
if(palindrom.test(str[i])==true) System.out.print(str[i]);
}
}
}
class Palindrom{
public boolean test(String a){
boolean k=true;
for(int i=0;i<(int)a.length()/2;i++){
if(!a.substring(i,i+1).equals(a.substring(a.length()-i-1,a.length()-i))){
k=false;
break;
}
k=true;
}
return k;
}
}
View more random threads:
Những điều eo sèo khi đeo vòng chỉ đỏ gia chủ cần tránh tiếp xúc với các hóa chất gột rửa khi sử dụng vòng Vòng chỉ đỏ được đan bởi những sợi chỉ đỏ mảnh, do vậy mà vòng dễ bị đứt. Gia chủ khi...
Bàn luận thông tin các điều kiêng...