Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何让两个单词在相交字符处相交。(一个垂直,另一个水平)_Java_For Loop_Printing_Crossword - Fatal编程技术网

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

Java 如何让两个单词在相交字符处相交。(一个垂直,另一个水平),java,for-loop,printing,crossword,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 vo

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

例如:

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));
    }
  }
publicstaticvoidmain(字符串[]args){
扫描仪kb=新扫描仪(System.in);
系统输出打印(“垂直:”);
String vertical=kb.next().toLowerCase();
系统输出打印(“水平:”);
字符串horizontal=kb.next().toLowerCase();
布尔索引=真;
int indexOf=0;
StringBuilder空间=新建StringBuilder();
while(索引){

对于(inti=1;i,这里有一些指针

  • 使用indexOf查找交点

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

  • spaces=”“.substring(0,indexOf);
    
  • 垂直单词的索引是在什么点打印水平单词 而不是垂直字符

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

  • 您不需要嵌套的while和for循环,只需要其中一个


  • 您有几个问题。第一个问题是当i==indexOf时打印两个字符串。第二个问题更微妙。当垂直单词比水平单词短时会发生什么情况?如果索引太偏右,则水平单词永远不会被打印。感谢您的帮助。打印i的理想方式是什么将水平字放在正确的位置,而不是依靠垂直字符放在正确的位置?像通常使用缩进和字符一样打印垂直字符。当indexOf=正确的位置时,打印水平字而不是垂直字符。