巴别图书馆网站(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,它也适用于其他所有。