巴贝尔楼层转换器代码库

时间:2015-11-01 01:52:57

标签: java converter babeljs floor

巴别图书馆网站(libraryofbabel.info o)包含伪随机生成文本的书籍,每本书有410页,位于图书馆的“地板”,“墙壁”和“架子”上。任何少于3200个字符的序列(包括所有26个字母以及句点,空格和逗号)都可以在至少一本书中找到。

巴别图书馆用某种基础36(我认为)数字系统对地板进行分类。

1楼是0,2楼是1,3楼是2 ...
11楼是a,12楼是b ...
36楼是00,37楼是01 ...
47楼是0a,48楼是0b ......

你明白了。无论如何,我想编写Java代码,该代码接收用户输入的babel floor索引(例如0a2)并将其转换为实际的楼层号。

由于我是Java的超级菜鸟,我迷路了。我该如何编写转换过程?

编辑:
好吧做了一个算法,写了一些代码。代码不起作用:

import java.util.Scanner;
import java.lang.Math;

public class Sandbox 
{
    public static void main(String args[]) 
    {
        System.out.println("enter babel floor:");
        Scanner num = new Scanner(System.in);
        String s = num.nextLine();
        int sum = 0;

    for(int x = 0; x<s.length(); x++)
    {
        int store = s.charAt(s.length() - x - 1);

        if(store>=10)
        store = store-86;

        else
        store+=1;

        sum += store * (int) Math.pow(36, x);
    }

    System.out.println(sum);

    }
}   

我输入01应该打印38,但它打印1814.我此刻没有尝试过其他任何事情。谁知道我做错了什么?

编辑2:
我想我做到了!:

import java.util.Scanner;
import java.lang.Math;

public class Sandbox 
{
    public static void main(String args[]) 
    {
        System.out.println("enter babel floor:");
        Scanner num = new Scanner(System.in);
        String s = num.nextLine();
        int sum = 0;

    for(int x = 0; x<s.length(); x++)
    {
        int store = s.charAt(s.length() - x - 1);

        if(store>=97)
        store = store - 86;

        else
        store = store - 47;

        sum += store * (int) Math.pow(36, x);
    }

    System.out.println(sum);

    }
}   

编辑3:
不。不要工作。 10应该打印53但是我得到73.我认为错误的算法。

编辑4:
无视编辑3.代码按预期工作。 10确实应该打印73,它也适用于其他所有。

0 个答案:

没有答案