黑马程序员技术交流社区

标题: 如何只用循环解决下面这道题? [打印本页]

作者: 毋须繁华    时间: 2013-8-31 15:21
标题: 如何只用循环解决下面这道题?
本帖最后由 毋须繁华 于 2013-8-31 17:03 编辑

将一个整数的各位数字颠倒后输出。
我目前只学到了for while。递归,排序什么的都还没学,求教怎么解出这道题?

作者: loading……99.9    时间: 2013-8-31 15:51
public class Test00
{
        public static void main(String[] args) throws Exception
        {
                int i = 123456;
                do
                {
                        int b = i % 10;
                       
                        System.out.print(b + " ");
                       
                        i = i/10;
                }while (i > 0);
        }
}
作者: 梦航    时间: 2013-8-31 15:53
  1. import java.util.Scanner;

  2. public class ReverseInt
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 // 1 (可完善)
  7.                 /*
  8.                 int num = 1234;
  9.                 System.out.print("结果为:");
  10.                 for (int i = 0; num > 0; i++)
  11.                 {
  12.                         System.out.print(num%10);
  13.                         num /= 10;
  14.                 }
  15.                 */

  16.                 // 2 (可完善)
  17.                 int num;
  18.                 Scanner in = new Scanner(System.in);
  19.                 System.out.print("请输入一整数:");
  20.                 num = in.nextInt();
  21.                 System.out.print("结果为:");
  22.                 for (int i = 0; num > 0; i++)
  23.                 {
  24.                         System.out.print(num%10);
  25.                         num /= 10;
  26.                 }
  27.                 System.out.println();
  28.         }
  29. }
复制代码
祝编程愉快!
作者: xiangzi2008006    时间: 2013-8-31 16:06
我以为是将整数颠倒后的整数输出,看来理解错了,不过还是把我的劳动成果贴出来,当成另一种结果。
  1.         //(1)while方法
  2.                 int init = 12457;
  3.                 int i = 1;
  4.                 int result = 0;

  5.                 while (init / i > 0) {
  6.                         i = i * 10;
  7.                 }
  8.                 i = i / 10;

  9.                 int count = 1; // 定义基数,从各位开始,下面每次乘10,直到最高位数
  10.                 int temp = 0;
  11.                 while (i > 0) {
  12.                         temp = init / i; // 获取最高位的值
  13.                         result += (temp) * count; // 最高位的值乘以反转之后对应的基数
  14.                         init = init - temp * i; // 除去原始数的最高位
  15.                         i = i / 10; // 下次的最高位的基数
  16.                         count = count * 10; // 每次乘10
  17.                 }

  18.                 System.out.println(result);

  19.                 // (2)StringBuffer反转字符串 ,如果学了这个,更方便

  20.                 int i1 = 12345;
  21.                 StringBuffer sb = new StringBuffer(String.valueOf(i1)); // 通过int值获取字符串,然后用该字符串定义StringBuffer
  22.                 String res = sb.reverse().toString(); // 通过Stringbuffer的反转方法反转字符串,返回的结果调用tostring转换为String类型
  23.                 int iResult = Integer.parseInt(res); // String类型转换为int类型
  24.                 System.out.println(iResult);
  25.                
复制代码

作者: wumuzhong    时间: 2013-8-31 16:08
public class Test {
        public static void main(String[] args){
                int a = 123456;
                reverse(a);
               
        }
        public static void reverse(int a){
                int i;
                while(a/10>0){                                //当a的位数大于1位 执行
                        i=a%10;                                        //求a的个位数
                        System.out.print(i);        //输出a个位数的值
                        a=a/10;                                        //a除于10 去掉个位数
                }
                System.out.print(a);                //当a为个位数 输出
        }
}
作者: 毋须繁华    时间: 2013-8-31 17:04
loading……99.9 发表于 2013-8-31 15:51
public class Test00
{
        public static void main(String[] args) throws Exception

谢谢,学习了, 代码很直观,%10 得到各位,然后再除以10.直到数字小于10.
作者: 毋须繁华    时间: 2013-8-31 17:05
wumuzhong 发表于 2013-8-31 16:08
public class Test {
        public static void main(String[] args){
                int a = 123456;

现在还没学构造函数= =
作者: 泡沫之夏    时间: 2013-8-31 22:31
比如说是123, 定义一个int数组 个为是123%10  十位是123/10%10   百位是 123/10/10  取出每一个放到数组中,然后就好操作了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2