1. java语言如何判断一个字符串是否回文
Java语言判断一个字符串是否回文可以通过下面的函数进行判断:
import java.util.Scanner;
public class huiwen
{public static void main(String args[])
{Scanner sca=new Scanner(System.in);
String str=sca.nextLine();
int a=str.length();
int middle=a/2,i=3;
//char c1=(char) a,c2=(char) a;
for(i=0;i<middle&&str.charAt(i)==str.charAt(a-1-i);i++)
{}
if(i<middle)
System.out.println(str+"不是回文");
else
System.out.println(str+"是回文");}}
c/c++判断一个字符串是否回文的方法:
#include <iostream>
#include <string>
using namespace std;
int main()
{string str; int i,j,l;int flag = 1;
while (cin >> str)
{ l = str.length(); for (i = 0,j = l-1; i <= j; i++,j--)
{ if (str[i] != str[j])
{ flag = 0;break; }}
if (flag)
cout << "YES" << endl;
else
cout << "NO" << endl;
flag = true;}
return 0;}
2. JAVA中的回文是什么一回是
"回文数"是一种数字.如:98789, 这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字
就是回文数.
任意某一个数通过以下方式相加也可得到
如:29+92=121 还有 194+491=685,586+685=1271,1271+1721=2992
不过很多数还没有发现此类特征(比如196,下面会讲到)
另外个别平方数是回文数
1的平方=1
11的平方=121
111的平方=12321
1111的平方=1234321
。
。
。
。
依次类推
3×51=153
6×21=126
4307×62=267034
9×7×533=33579
上面这些算式,等号左边是两个(或三个)因数相乘,右边是它们的乘积。如果把每个算式中的“×”和“=”去掉,那么,它们都变成回文数,所以,我们不妨把这些算式叫做“回文算式”。还有一些回文算式,等号两边各有两个因数。请看:
12×42=24×21
34×86=68×43
102×402=204×201
1012×4202=2024×2101
不知你是否注意到,如果分别把上面的回文算式等号两边的因数交换位置,得到的仍是一个回文算式,比如:分别把“12×42=24×21”等号两边的因数交换位置,得到算式是:
42×12=21×24
这仍是一个回文算式。
还有更奇妙的回文算式,请看:
12×231=132×21(积是2772)
12×4032=2304×21(积是48384)
这种回文算式,连乘积都是回文数。
四位的回文数有一个特点,就是它决不会是一个质数。设它为abba,那它等于a*1000+b*100+b*10+a,1001a+110b。能被11整除。
六位的也一样,也能被11整除
还有,人们借助电子计算机发现,在完全平方数、完全立方数中的回文数,其比例要比一般自然数中回文数所占的比例大得多。例如11^2=121,22^2=484,7^3=343,11^3=1331,11^4=14641……都是回文数。
人们迄今未能找到五次方,以及更高次幂的回文数。于是数学家们猜想:不存在nk(k≥5;n、k均是自然数)形式的回文数。
在电子计算器的实践中,还发现了一桩趣事:任何一个自然数与它的倒序数相加,所得的和再与和的倒序数相加,……如此反复进行下去,经过有限次步骤后,最后必定能得到一个回文数。
这也仅仅是个猜想,因为有些数并不“驯服”。比如说196这个数,按照上述变换规则重复了数十万次,仍未得到回文数。但是人们既不能肯定运算下去永远得不到回文数,也不知道需要再运算多少步才能最终得到回文数。
3. 如何用java判断回文数
System.out.println("请输入...");
Scanner in = new Scanner(System.in);
String number = in.next();
System.out.println("您输入的是"+number);
boolean flag = true;
for(int i=0;i<number.trim().length()/2;i++){
//把索引为i位置的字符和它对称索引位置的字符相比,看是否一样
if(!String.valueOf(number.charAt(i)).equals(String.valueOf(number.charAt(number.trim().length()-i-1)))){
flag = false;
break;
}
}
if(flag){
System.out.println("它是回文数");
}else{
System.out.println("它不是回文数");
}
没有加上对输入数据的合法性校验,如果有需要的话,你可以自行对number进行检查,例如校验number是不是数字,是不是负数等等
4. java判断字符串是否为回文
equals方法接受的参数是字符串的,要用toString()。
提供建议如下:
1、进入if前,先输出刚才得到的用户输入值。
2、手工写段4位或5位回文数的算法,就是把用户的输入5位数字分别除1万、1千、1百、1十,得到每个位的数字,然后比较,看是否是回文数。把这个结果作为对比依据。
5. 回文数个数,Java编程
importjava.util.Scanner;
publicclassPalindromicNumber{
publicstaticvoidmain(String[]args){
System.out.println("一个正整数n(0<n<=100000)");
Scannersc=newScanner(System.in);
intn=sc.nextInt();
intcount=0;
for(inti=1;i<=n;i++){
if(isPalindromicNumber(i)){
count++;
}
}
sc.close();
System.out.println("1~"+n+"之间总共"+count+"个回文数");
}
(intn){
Stringnum=String.valueOf(n);
if(num.length()!=1){
char[]temp=num.toCharArray();
for(inti=0;i<temp.length/2;i++){
if(temp[i]!=temp[temp.length-1-i]){
returnfalse;
}
}
}
//System.out.println(n+"是回文数");
returntrue;
}
}
6. java编程回文串
importstaticjava.lang.System.*;
importjava.util.Scanner;
publicclassProgram{
publicstaticvoidmain(String[]args){
Scannerscanner=newScanner(in);
System.out.print("请键入字符串:");
Stringvalue=scanner.next();
booleanisSame=true;
scanner.close();
for(inti=0;i<value.length();i++){
intj=value.length()-i-1;
if(i>=j)break;
if(value.charAt(i)!=value.charAt(j)){
isSame=false;
break;
}
}
if(isSame)out.println(value+"是回文串");
elseout.println(value+"不是回文串");
}
}
7. java实现1000以内回文素数(质数)
publicclass${
publicstaticvoidmain(String[]args){
for(inti=1;i<=1000;i++){
if(!check(i)){
continue;
}
if(huiweishu(i)){
System.out.println(i);
}
}
}
privatestaticbooleancheck(intnum){
intsqrt=(int)Math.sqrt(num);
for(intj=2;j<sqrt+1;j++){
if(num%j==0){
returnfalse;
}
}
returntrue;
}
privatestaticbooleanhuiweishu(inti){
inta;
if(i<99){
a=i/10;
}else{
a=i/100;
}
returna==i%10;
}
}
11
101
131
151
181
191
313
353
373
383
727
757
787
797
919
929
8. java 回文
String s = "abbcbcbba";
StringBuffer sbuff=new StringBuffer(s);
String rs=sbuff.reverse().toString();//倒序一个字符串
System.out.println(s.equals(rs));
***********************
//这个算法也行,只是程序问题太多,改了一下
//HuiWen.java //注意大小写
public class HuiWen{//有入口方法和程序要想能运行必须用 public 修饰
int i,j;
String s1,s2;
public HuiWen(String es1,String es2){ //构造器
s1 = es1;
s2 = es2;
}
public /*String*/ boolean judge(){ //判断字符串是否为回文,你的返回值有什么意义? 改成boolean或 void可能更合适
String es1=" ";
String es2=" ";
for(i=0;i<s1.length();i++){
char c = s1.charAt(i);
es1+=c;
}
//return es1;//这里用了个返回语句,程序就不能往下执行了,要注释掉
for(int j=(s2.length()-1);j>=0;j--){//j 未声明 for(int j
char d = s2.charAt(j);
es2+=d;
}
//return es2;//这里用了个返回语句,程序就不能往下执行了,要注释掉
if (es1.equals(es2)){
System.out.println("字符串es1是回文:"+es1);
return true;
}
else{
System.out.println("字符串es1不是回文!");
return false;
}
}
public static void main(String[] args){
//String s1="gabag";
//String s2="gabag";
HuiWen h1=new HuiWen("gabag", "gabag");
// Huiwen h2=new Huiwen("s2");
h1.judge();
//h2.judge();
}
}
9. java判断回文字符串几种简单的实现
import java.util.Scanner; public class Tststriu { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入字符串的个数:"); int n = sc.nextInt(); String[] a = new String[n]; for(int i = 0;i < n;++i){ System.out.println("输入第"+(i+1)+"个字符串:"); a[i] = sc.next(); } int sum = 0; String max = null; for(int i = 0;i < n;++i){ if(isString(a[i])) sum++; if(bijao(a[i],max)){ max = a[i]; } } System.out.println("回文字符串个数是:"+sum); System.out.println("最大字符串是:"+max); } public static boolean isString(String s){ int n = s.length(); int i=0; for(i=0; i < n/2; i++) { if(s.charAt(i)!= s.charAt(n-1-i)) break; } if(i>=n/2) return true; else return false; } public static boolean bijao(String s1,String s2){ if(s2 == null) return true; int n = Math.min(s1.length(),s2.length()); for(int i = 0; i< n;++i){ if((int)s1.charAt(i)>(int)s2.charAt(i)) return true; else return false; } if(n==s1.length()) return false; else return true; } }
10. 【JAVA】:回文数字
importjava.util.Scanner;
publicclassMain{
staticfinalintstart=10001;
staticfinalintend=999999;
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);
intt;
StringBuildersb;
intsum;
booleansu;
while(sc.hasNextInt()){
su=false;
t=sc.nextInt();
for(inti=start;i<=end;i++){
sum=0;
sb=newStringBuilder(String.valueOf(i));
if(sb.toString().equals(sb.reverse().toString())){
for(intj=0;j<sb.length();++j){
sum+=sb.charAt(j)-'0';
}
if(sum==t){
su=true;
System.out.println(i);
}
}
}
if(!su){
System.out.println(-1);
}
}
sc.close();
}
}
如果不能AC,优化一下: 对每个i,转为(字符或整数)数组,对数组从索引0到长度的一半遍历,判断对称位置是否相同,且各位数字和是否符合要求.