将输入字数(如七)转换为字符(如@)

时间:2009-10-17 19:32:51

标签: java algorithm loops for-loop

因此,如果用户使用Scanner键入7,则@@@@@@@(7)将成为输出。我将不得不使用for循环语句,但我至少可以弄清楚。只需要帮助找出将字数转换为数字数字并最终转换为随机字符的方法。

3 个答案:

答案 0 :(得分:2)

您需要做的第一件事是将有效数字字符串“十”,“二十五”等转换为数字,然后将该数字传递给循环。

因此,您基本上需要编写一个令牌解析器来将单词转换为数字。然后定义标记将允许您轻松转换为int。 (在这个例子中,我只打算处理内容)。

明显的代币:

  1. 一,二,三等(一到十九)。 (把这个称为数字)。
  2. 二十,三十,四十等(二十到九十)。 (称之为十位)
  3. 百,千等(称之为权力)
  4. 使用“”,“和”和“ - ”作为分隔符(编写一百零六,二十五的常用方法)。

    然后,您可以将字符串解析为标记,这应该为您提供转换为int的规则。从右边开始,到左边工作,你遵循一定的规则。递归地一次使用两个令牌。一路走来。权力将是一个特殊情况,你将乘以前面的数字。

    例如,“一百二十七”会转换为代币:

    DIGIT POWER TENS DIGIT

    这将使用规则(DIGIT + TENS)+(DIGIT * POWER)

    (7 + 20)+(1 * 100)= 127

    转换完成后,您可以使用for循环轻松转换为重复的字符串。

    我希望能让你开始朝着正确的方向前进。

答案 1 :(得分:0)

  

我将不得不使用for循环语句,但我至少可以弄清楚。

我在这里看不到任何关于面向对象方法的内容。我讨厌看到人们使用面向对象的语言并用它编写Fortran。

从对象开始,将此问题分解为部分:

  1. 将字转换为数字并返回,而不考虑输入或输出。
  2. 读取字符串,将其解析为单词并进行验证,因为您无法接受所有字符串。
  3. 您的特殊输出需求。
  4. 不要在数字,字符串和扫描仪方面考虑这样的原子级别。创建一个抽象;想象一个物体并开始分解。

答案 2 :(得分:0)

你应该对这个问题更加具体。正如我所理解的那样,这是一个非常基本的问题解决方案(非常有限的解决方案)。

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);