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

标签 java for-loop printing crossword

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

一个例子:

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

最佳答案

这里有一些提示。

  1. 使用indexOf找到交点。

  2. 水平字的索引是垂直字符缩进的距离。 找到索引后,可以通过执行以下操作轻松获得间距:

     spaces = "                        ".substring(0,indexOf);
  • 竖字的索引是在什么点打印横字 而不是垂直字符。

  • 记住要处理没有共同字符的特殊情况。

  • 您不需要嵌套的 while 和 for 循环。只需要其中之一即可。

  • 关于java - 如何让两个单词在相交的字符处交叉。 (一个垂直,另一个水平),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58001319/

    相关文章:

    java - Java 中的回文程序没有给出正确的输出

    java - 尝试将 int 数组的内容复制到 Dimension 数组会导致 NullPointerException

    java - 使用 if else 语句调用不同的类

    java - 如何获得java中每个循环输出的总和?

    javascript - WebStorm 无法识别 Javascript "for...of..."结构

    php - 将 php 输出保存在文件中

    C++ 打印/cout 在多线程中重叠?

    java - Selenium WebDriver - 无法使用 AutoIT 上传文件

    javascript - 遍历javascript对象IE8

    java - 按级别打印任何给定的二进制 TreeSet -Java