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

Java 将输入字号(如七)转换为字符(如@),java,algorithm,loops,for-loop,Java,Algorithm,Loops,For Loop,因此,如果用户使用Scanner键入seven,@@@@@@@(7)将作为输出。我将不得不使用for循环语句,但我至少可以理解这么多。只需要帮助找出一种方法,将字数转换成数字,最后转换成随机字符 我将不得不使用for循环语句,但我至少可以理解这么多 我在这里没有看到太多关于面向对象方法的内容。我讨厌看到人们使用面向对象语言编写Fortran 从一个对象开始,将此问题分解为几个部分: 将单词转换成数字并返回,不考虑输入或输出 读取字符串,将其解析为单词,并进行验证,因为您不能接受所有字符串 您的特

因此,如果用户使用Scanner键入seven,@@@@@@@(7)将作为输出。我将不得不使用for循环语句,但我至少可以理解这么多。只需要帮助找出一种方法,将字数转换成数字,最后转换成随机字符

我将不得不使用for循环语句,但我至少可以理解这么多

我在这里没有看到太多关于面向对象方法的内容。我讨厌看到人们使用面向对象语言编写Fortran

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

  • 将单词转换成数字并返回,不考虑输入或输出
  • 读取字符串,将其解析为单词,并进行验证,因为您不能接受所有字符串
  • 您的特殊输出需要

  • 不要用数字、字符串和扫描器来考虑这样的原子级别。创建一个抽象概念;想象一个物体并开始分解。

    你应该更具体地回答这个问题。根据我的理解,这是一个非常基本的问题解决方案(一个非常有限的解决方案)

    Scanner-in=新的扫描仪(System.in);
    Random rand=新的Random();
    String word=in.nextLine().toLowerCase();
    整数=0;
    //将字号转换为数字。
    如果(单词等于(“一”))
    数字=1;
    else if(单词等于(“二”))
    数量=2;
    else if(单词等于(“三”))
    数字=3;
    else if(单词等于(“四”))
    数字=4;
    else if(单词等于(“五”))
    数字=5;
    else if(单词等于(“六”))
    数字=6;
    else if(单词等于(“七”))
    数字=7;
    else if(单词等于(“八”))
    数字=8;
    else if(单词等于(“九”))
    数字=9;
    其他的
    System.out.println(“数字不存在”);
    //将数字转换为随机字符。
    char character=(char)(33+rand.nextInt(94));
    //按数字所示的次数打印字符。
    for(int i=0;i
    您需要做的第一件事是将有效的数字字符串“十”、“二十五”等转换为一个数字,然后将该数字传递到循环中

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

    明显的标记:

  • 一、二、三等(一比十九)。(称之为数字)
  • 二十、三十、四十等(二十到九十)。(称之为十)
  • 十万、千等(称之为权力)
  • 使用“、”和“-”作为分隔符(常用的书写方式是一百零六或二十五)

    然后,您可以将字符串解析为标记,这将为您提供转换为int的规则。从右开始,向左操作,您将遵循某些规则。递归地一次使用两个令牌。沿途添加。幂是一种特殊情况,你将乘以前面的数字

    例如,“127”将转换为代币:

    数字幂十位数

    这将使用规则(数字+十)+(数字*幂)

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

    转换之后,可以使用for循环轻松地转换为重复字符串


    我希望这能让您从正确的方向开始。

    展示您目前的工作会很有帮助。输入的内容会是什么样的?较长的数字是否会连字符(例如73对73)?你是从美式英语还是英式英语转换过来的(例如10亿对1百万)?“and”这个词会在数字的前面吗(例如,103对103)?你会想使用equalsIgnoreCase()这样你就不必担心“Seven”、“Seven”等。在if块之前把这个词降格更便宜
    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);