Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String - Fatal编程技术网

在java编程中使用用户输入的字符生成三角形

在java编程中使用用户输入的字符生成三角形,java,string,Java,String,我不熟悉java的编码和使用。我已经在这段java代码上工作了很长一段时间了,我就是想不出来。我正在尝试编写一个程序,它以字符串作为输入,然后以一系列行的形式输出字符串,第一个字符,然后是两个字符,然后是三个字符,依此类推。但根据原始字符串的大小,最后一行可能较短。一个示例输出是: String? abcdefghijklmnopqrstuvwxyz0123456789 a bc def ghij klmno pqrstu vwxyz01 23456789 这就是我现在所做的,我尝试了一些事情

我不熟悉java的编码和使用。我已经在这段java代码上工作了很长一段时间了,我就是想不出来。我正在尝试编写一个程序,它以字符串作为输入,然后以一系列行的形式输出字符串,第一个字符,然后是两个字符,然后是三个字符,依此类推。但根据原始字符串的大小,最后一行可能较短。一个示例输出是:

String? abcdefghijklmnopqrstuvwxyz0123456789
a
bc
def
ghij
klmno
pqrstu
vwxyz01
23456789
这就是我现在所做的,我尝试了一些事情

import java.util.Scanner;

public class TrianglingPhrase {

   public static void main(String[] args) {
      // declare variables
      String phrase;
      int start = 0;

      // get input
      Scanner scan = new Scanner(System.in);

      System.out.print("String? ");
      phrase = scan.nextLine();

      while(start < phrase.length()) {
         String row = phrase.substring(start, start + 1);

         start++;

         System.out.println(row);
      }
   }
}
无论您做什么,子字符串(start,start+1)都只能生成长度为1的字符串。因此,至少这必须持续增长。在本例中使用var n。无论何时开始+n>length()它都应该停止增长

int n=0;
while(开始phrase.length())
n=短语.length()-开始;
字符串行=短语.子字符串(开始,开始+n);
开始+=n;
系统输出打印项次(行);
}

因为这些都是所谓的,所以可以用i*(i+1)/2对它们进行建模。“起点”跟踪旧终点的位置,以便您可以执行以下操作:

int start = 0;
    int end = 1;

    for (int i = 2; end <= phrase.length(); i++) {


        String row = phrase.substring(start, end);

        System.out.println(row);
        start = end;
        end = (i * (i + 1) / 2);
    }
}
int start=0;
int-end=1;

对于(int i=2;end),当前代码的输出是什么?它不工作吗?
int n=0;

while(start < phrase.length()) {
  n++;
  if(start+n > phrase.length())
    n=phrase.length()-start;
  String row = phrase.substring(start, start + n);
  start+=n;
  System.out.println(row);
}
int start = 0;
    int end = 1;

    for (int i = 2; end <= phrase.length(); i++) {


        String row = phrase.substring(start, end);

        System.out.println(row);
        start = end;
        end = (i * (i + 1) / 2);
    }
}