上次运行字符串循环时出现子字符串错误

Substring error on last run of string loop

提问人:Scoder58 提问时间:12/6/2022 更新时间:12/6/2022 访问量:35

问:

我制作此代码是为了从用户输入的字符串中制作一个三角形。

import java.util.Scanner;
public class NameTriangle
{
   public static void main(String args[])
   {
      Scanner keyboard = new Scanner(System.in);
      System.out.print("Please enter a word or phrase: ");
      String name = keyboard.nextLine();
      int b = 0;
      int len2 = name.length();
      int sub = 0;
      int count = 0;
      System.out.println("");
      for(int len = name.length(); sub <= len; sub++)
      {
           String namesub = name.substring(sub, len-count);
           int sublen = namesub.length();
           for(int i = len2; b <= count + i - sublen; b += 3)
           {
              System.out.print(" ");
           }
           System.out.println(namesub);
           b = 0;
           count++;
      }
   }
}

**它完美地工作到最后一次循环。当它尝试循环上次出现此错误时:**

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: begin 10, end 8, length 18
    at java.base/java.lang.String.checkBoundsBeginEnd(String.java:3410)
    at java.base/java.lang.String.substring(String.java:1883)
    at NameTriangle.main(NameTriangle.java:16)

**我试图从子字符串中的 sub 和 len 中添加和减去 1,它要么在第一个循环上崩溃,出现与之前相同的错误,要么偏移字符串和循环,直到它到达最后一个循环并导致相同的错误。我尝试在第一个 for 循环中弄乱布尔语句,但在我输入字符串值后它什么也没运行。

我认为它非常接近工作,我只是忽略了一些简单的事情,但任何帮助将不胜感激。**

java for 循环 java.util.scanner 字符串长度

评论


答: 暂无答案