如何让两个单词在相交的字符处交叉。(一个垂直,另一个水平)

我正在为学校做一份家庭作业,作业规定“输入两个单词,并垂直打印一个单词,水平打印一个单词,以便它们相交”。


一个例子:


vertical: coffee

horizontal: suffering

  c

  o

suffering

  f

  e

  e

当我进入咖啡和痛苦时,我得到以下输出:


vertical: coffee

horizontal: suffering

   c

   o

suffering

   f

   f

   e

   e

我的代码如下:


public static void main(String[] args) {


    Scanner kb = new Scanner(System.in);


    System.out.print("vertical: ");

    String vertical = kb.next().toLowerCase();


    System.out.print("horizontal: ");

    String horizontal = kb.next().toLowerCase();


    boolean indexed = true;

    int indexOf = 0;

    StringBuilder spaces = new StringBuilder();


    while (indexed) {

      for (int i = 1; i <= vertical.length()-1; i++) {

        String found = vertical.substring(i - 1, i);

        spaces.append(" ");

        if (horizontal.contains(found)) {

          indexOf = i;

          indexed = false;

          break;

        }

      }

    }


    for (int i = 1; i <= vertical.length(); i++) {

      if (i == indexOf) {

        System.out.println(horizontal);

      }

      System.out.println(spaces + vertical.substring(i - 1, i));

    }

  }


慕慕森
浏览 87回答 1
1回答

紫衣仙女

这里有一些提示。使用indexOf查找交点。水平字的索引是垂直字符缩进的距离。找到索引后,可以通过执行以下操作轻松获得间距:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spaces&nbsp;=&nbsp;"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".substring(0,indexOf);垂直单词的索引是在什么点打印水平单词而不是垂直字符。请记住在没有共同字符时处理特殊情况。您不需要嵌套的 while 和 for 循环。只需要其中之一即可。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java