判断一个数是不是回文数(Java StringBuffer)

这个题目如果是用Java写,会联想到StringBuffer类中有一个倒置字符串的函数:reverse(),值得注意的是,这个函数返回一个引用,也就是说,进行倒置之后原来的StringBuffer对象也就变了,所以一定要记得在写的时候注意。


        Scanner s1=new Scanner(System.in);
        String in=s1.next();
        StringBuffer n=new StringBuffer(in);
        n.reverse();//倒置字符串
        String out=n.toString();//转换成String类型
        if (in.equals(out)) {
            System.out.println("是回文数");
        }else{
            System.out.println("不是回文数");
        }
        s1.close();

这里为什么不直接用两个StringBuffer比较呢?StringBuffer的equals函数比较的是两个对象的引用,并不能返回正确的答案。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
写出一个People,并由该做基派生出子Employee和Teacher。其中People具有name、age两个保护成员变量,分别为String型和整型,且具有共有的getAge()成员方法,用于返回age变量的值,并编写一个两个参的构造函。Employee具有保护成员String变量employeeNo,TeacherString型的teano和zc变量,并分别为两个子编写一个无参的构造函。若使两个子正常的编译,请在父中解决该问题。 public class Employee extends People{ protected String employeeNo ; //construct method Employee() { } } package Exercise1; public class People { protected String name ; protected int age ; //construct method People() { } People(String name,int age) { this.name = name ; this.age = age ; } //getAge public int getAge() { return this.age ; } } package Exercise1; public class Teacher extends People{ protected String teano ; protected String zc ; //construct method Teacher() { } } package Exercise1; public class MainTest { public static void main(String[] args) { // TODO Auto-generated method stub Employee em = new Employee(); em.age = 20; em.employeeNo = "1234560"; em.name = "Jim" ; System.out.println("Employee : name :"+em.name+"age:"+em.age+"emplyeeNo:"+em.employeeNo); Teacher tea = new Teacher(); tea.age = 26; tea.name = "Tom" ; tea.teano= "456"; tea.zc = "Go" ; System.out.println("Teacher : name :"+tea.name+"age:"+tea.age+"teano:"+tea.teano+"zc:"+tea.zc); } } 题目:判断101-200之间有多少个素,并输出所有素。 public class SuShu { public static void main(String[] args) { int m; int i; int k=0; for(m=1;m<=100;m++) { for(i=2;i<m;i++) { if((m%i)==0) { break; } } if(i==m) { k++; System.out.println(m); } } System.out.println("sushu you"+k); } } 题目:一个5位判断是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 import javax.swing.JOptionPane; public class Exer3 { public static void main(String[] args) { String s1 = JOptionPane.showInputDialog(" Input a string (s1>=10000 && s1<100000) :"); String s2 = new StringBuffer(s1).reverse().toString(); if(s1.equals(s2)){ JOptionPane.showMessageDialog(null,"yes"); }else{ JOptionPane.showMessageDialog(null,"no"); } } } 题目:打印出杨辉三角形(要求打印出10行 import java.util.Scanner; public class YHSanJiao { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Enter a data:"); int n = input.nextInt(); int[][] a = new int[n][n]; for(int i = 0; i<n ; i++){ for(int j = 0; j <=i;j++){ if(j==0||i==j) a[i][j]=1; else a[i][j] = a[i-1][j-1] + a[i-1][j]; System.out.print(a[i][j] + " "); } System.out.println(); } } } Enter a data:10 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 GradeDemo中的checkAnswer方法实现不定项选择判分,具体要求如下: 1) 考生答案和正确答案相同(不考虑选项顺序),得5分。 2) 考生答案不全,得2分。 3) 考生答案中有错误答案,得0分。 部分示例如下: 正确答案 考生答案 得分 ABC ABC/ACB/BAC/CBA/BCA 5 ABC A/B/C/AB/AC/BC/CB/CA/BA 2 ABC D/AD/BD/CD/ABD/BCD/ACD/ABCD 0 请完成checkAnswer方法,根据正确答案和考生答案,返回得分。 String相关方法: public char charAt(int index):返回指定索引处的 char 值 public boolean equals(Object anObject):比较此字符串与指定的对象。 public int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引, 找不到返回-1 public String substring(int beginIndex, int endIndex):返回一个新的字符串,该 子字符串始于指定索引处的字符,一直到此字符串末尾。 public class GradeDemo { public static void main(String[] args) { String correctAnswer = "ACD"; String userAnswer = "AD"; int grade = checkAnswer(correctAnswer,userAnswer); System.out.println("本题的得分是 : " + grade); } public static int checkAnswer(String correctAnswer,String userAnswer){} public static boolean checkString(String correctAnswer,String userAnswer){} } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// import javax.swing.JOptionPane; public class CheckAnswer { public static void main(String[] args) { String correctAnswer = "ACD"; String userAnswer = JOptionPane.showInputDialog("考生答案为:"); userAnswer = userAnswer.toUpperCase(); int grade = checkAnswer(correctAnswer,userAnswer); System.out.println("本题的得分是: " + grade); } public static int checkAnswer (String correctAnswer,String userAnswer ){ if(correctAnswer.length()==userAnswer.length()){ if(checkString(correctAnswer,userAnswer)) return 5; else return 0; } else if(correctAnswer.length()>userAnswer.length()){ if(checkString(correctAnswer,userAnswer)) return 2; else return 0; } else return 0; } public static boolean checkString (String correctAnswer,String userAnswer ){ boolean m = true; for(int i = 0; i < userAnswer.length(); ++i){ if(correctAnswer.indexOf(userAnswer.charAt(i))==-1){ m= false; break; } } return m ; } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值