回 帖 发 新 帖 刷新版面

主题:新手上路,请教大家问题!

我刚开始是学习JAVA,还没学算法,做了个题目遇到点困难,请大家帮忙
要求是将输入的数字,例如 7679536,倒过来输入 结果:6359767
我的代码:

public class DigitExtractor 
{
    private int target;
    
    public DigitExtractor( int numbers)
    {
        target = numbers;
    }
    
    public void nextDigit()
    {
        int[] data = new int[10];
        
        for ( int i = 9; i >= 1; i--)
        {
            int digit = (int) (target / Math.pow(10, i));
            data[i] = digit;
            target -= digit * Math.pow(10, i);
        }
        
        for ( int m = 0; m <= 9; m++)
        {
            System.out.println(data[m]);
        }
    }
    
    public static void main ( String[] args)
    {
        DigitExtractor leot = new DigitExtractor(1234567895);
        leot.nextDigit();
    }

}


我向想大家请教好的算法,以及我这个方法里的问题该如何解决!
感谢

回复列表 (共4个回复)

沙发

这个代码我认为有两个问题
一个是如何获得数字的“位数”,就是这里的 10
二个是如何获取个位数字,输出结果是:0987654321

板凳

用栈就好啦!

3 楼

interface A   //接口A
{
    void put(char ch);
    char get();
}
class B implements A   //类B实现接口A
{
    private char array[]=new char[10];
    private int i=0;
    public void put(char ch)
    {
        array[i++]=ch;
    }
    public char get()
    {
        return array[--i];
    }
}
public class Stack {
    public static void main(String args[])
    {
        B s=new B();
        s.put('7');
        s.put('6');
        s.put('7');
        s.put('9');
        s.put('6');
        s.put('3');
        s.put('6');
        System.out.print(s.get());
        System.out.print(s.get());
        System.out.print(s.get());
        System.out.print(s.get());
        System.out.print(s.get());
        System.out.print(s.get());
        System.out.print(s.get());
    }

}
运行结果:6369767

你的程序我改了改你看看:
public class DigitExtractor 
{
    private int target;
    
    public DigitExtractor( int numbers)
    {
        target = numbers;
    }
    
    public void nextDigit()
    {
        int[] data = new int[10];
        
        for ( int i =9; i >= 0; i--)
        {           
           int digit = (int) (target/Math.pow(10, i));
           data[i] = digit;
           target -= digit * Math.pow(10, i);
        }
        
        for ( int m = 0; m <= 9; m++)
        {   
            if(data[m]==0)
                continue;
            System.out.print(data[m]);
           
        } System.out.println();
    }
    
    public static void main ( String[] args)
    {
        DigitExtractor leot1 = new DigitExtractor(1234567895);
        leot1.nextDigit();
        DigitExtractor leot2=new DigitExtractor(45678);
        leot2.nextDigit();
    }

}
运行结果:5987654321
          87654

4 楼

太感谢了!

我来回复

您尚未登录,请登录后再回复。点此登录或注册