因此,如果用户使用Scanner键入seven,则输出将是@ (7)。我将不得不使用for loop语句,但我至少可以弄清楚这一点。只是需要帮助找出一种方法,将单词数字转换为数字,最后转换为随机字符。
发布于 2009-10-17 20:19:04
您需要做的第一件事是将一个有效的数字字符串"ten“、”25“等转换为一个数字,然后将该数字传递到循环中。
因此,您基本上需要编写一个令牌解析器来将单词转换为数字。然后,定义标记将允许您轻松地转换为int。(在本例中,我将只处理in )。
显而易见的标记:
使用“”、“和”和"-“作为分隔符(书写106或25的常用方式)。
然后,您可以将字符串解析为标记,这将为您提供转换为int的规则。从右边开始,从左边开始,你要遵循一定的规则。一次递归地使用两个令牌。在此过程中添加。幂是一种特殊情况,可以乘以前面的数字。
例如,“127”将转换为以下标记:
数字幂十位数字
这将给出使用规则(数字+十)+(数字*幂)
或
(7 + 20) + (1 * 100) = 127
在转换之后,您可以使用for循环轻松地转换为重复的字符串。
我希望这能让你在正确的方向上开始。
发布于 2009-10-17 19:58:40
我将不得不使用
循环语句,但我至少可以弄清楚。
我在这里看不到太多关于面向对象方法的东西。我讨厌看到人们使用一种面向对象的语言并用它来编写Fortran。
从一个对象开始,将这个问题分解为几个部分:
在不考虑输入或字符串中的output.
就数字、字符串和扫描器而言,不要在原子级别上进行思考。创建一个抽象;想象一个对象并开始分解。
发布于 2009-10-17 20:17:40
你应该对这个问题说得更具体一些。据我所知,这是一个非常基本的问题解决方案(一个非常有限的解决方案)。
Scanner in = new Scanner(System.in);
Random rand = new Random();
String word = in.nextLine().toLowerCase();
int number = 0;
// Convert a word number into a numerical number.
if (word.equals("one"))
number = 1;
else if (word.equals("two"))
number = 2;
else if (word.equals("three"))
number = 3;
else if (word.equals("four"))
number = 4;
else if (word.equals("five"))
number = 5;
else if (word.equals("six"))
number = 6;
else if (word.equals("seven"))
number = 7;
else if (word.equals("eight"))
number = 8;
else if (word.equals("nine"))
number = 9;
else
System.out.println("Number does not exist. ");
// Convert the number into a random character.
char character = (char) (33 + rand.nextInt(94));
// Print the character as many times as the number implies.
for (int i = 0; i < number; i++)
System.out.print(character);https://stackoverflow.com/questions/1583021
复制相似问题