A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹晓涵 中级黑马   /  2012-7-27 02:43  /  1818 人查看  /  1 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

----------------此题来源于我的期末考试历年真题一直苦于没有学长整理答案,希望黑马会做的同学帮写下答案或纠正我的解法方便我整理答案备考---------------

题目:输入正整数,把第i位和第i+1位互换,
比如1234,变成214312345变成103254(当输入的整数为奇数时,在第一位补0变成偶数位,然后将第2i-1位与第2i位互换)
解答:Exchange.java
  1. import java.util.Scanner;
  2. class Exchange
  3. {
  4. public static void main(String args[])
  5. {
  6. Scanner scanner = new Scanner(System.in);
  7. System.out.println("请输入一个整数");
  8. String str = scanner.next();
  9. System.out.println("你所输入的整数为"+str);
  10. String stri;
  11. //System.out.println(str.length()/2);
  12. if((str.length()%2)==0)
  13. stri = str;
  14. else
  15. stri = "0"+str;
  16. char[] ch = stri.toCharArray();
  17. for(int i=0;i<ch.length/2;i++)
  18. {
  19. int a = 2*i;
  20. int b = 2*i+1;
  21. swap(ch,a,b);
  22. }
  23. StringBuffer sb = new StringBuffer();
  24. for(int i = 0; i < ch.length; i++){
  25. sb.append(ch[i]);
  26. }
  27. String newStr = sb.toString();
  28. System.out.println("第i位和第i+1位调换后的整数位为:"+newStr);

  29. }
  30. public static void swap(char[] ch,int x,int y)
  31. {
  32. char temp = ch[x];
  33. ch[x]=ch[y];
  34. ch[y]=temp;
  35. }
  36. }
复制代码

运行:





评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

1 个回复

倒序浏览
  1. import java.util.Scanner;

  2. public class Exchange {
  3.         public static void main(String[] args) {
  4.                 Scanner input = new Scanner(System.in);
  5.                 System.out.print("请输入一个整数:");
  6.                 String s = input.next();
  7.                 System.out.println("你所输入的是:" + s + "\n调整后的是:" + exChange(s));
  8.         }

  9.         //这是转换用的方法。
  10.         public static String exChange(String s) {
  11.                 char[] nums;
  12.                 String changed = "";
  13.                 if (s.length() % 2 == 1) {//用来判断长度是偶数还是奇数,然后做不同处理。
  14.                         s = "0"+s;
  15.                 }
  16.                 nums = s.toCharArray();
  17.                 for (int size = 0; size < nums.length; size += 2) {//开始交换
  18.                         char temp = nums[size];
  19.                         nums[size] = nums[size + 1];
  20.                         nums[size + 1] = temp;
  21.                         changed = changed + nums[size] + nums[size + 1];
  22.                 }

  23.                 return changed;
  24.         }
  25. }
复制代码
这个是我写的一个方法呢!

评分

参与人数 1技术分 +1 收起 理由
田向向 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马