-1

作业问题得到了前 4 个问题,最后一个问题被卡住了。如果用户输入 hello 作为字符串,输入 3 作为整数,当我尝试时它应该打印“helheh”,它会打印“helhehehehehe”

问题:编写一个程序,从用户那里读取一个字符串和一个整数 n。输出由字符串的前 n 个字符组成的字符串,然后是字符串的前 n-1 个字符,以此类推。您可以假设 n 介于 0 和字符串的长度之间(含)。

我尝试在子字符串部分使用 i-1 将其添加到字符串中,但这不起作用。

 System.out.println("Please input a string: ");
 string = in.next();

 System.out.println("Please input an integer: ");
 n = in.nextInt();

 int lenstring = string.length();

 String tring = string.substring(0,n);
 for(int i = lenstring; i>0; i--)
 {
     con += string.substring(0,n-1);
 }
System.out.println(tring+con);
4

4 回答 4

1

在这里,试试这个:

for( int i = n;  i > 0;  i-- )
   con += string.substring( 0, i );
System.out.println( con );

我没有尝试过,但我相信它应该可以工作。

无论如何,如果您只是考虑一下,它可能会帮助您了解您需要做什么以及为什么需要以这种方式而不是其他方式来做。

于 2019-10-01T21:41:32.977 回答
1

尝试将 for 语句替换为

for(int i=0; i<n; i++)
{ 
     con += string.substring(0,n-i);
}
于 2019-10-01T21:41:50.660 回答
0

如果你想要一个字符串的第一个字符,第一个参数substring必须是 0。它是。查看。

如果您想要字符串的 n, n-1, ... 1 个字符,则第二个参数substring必须是 n, n-1, ... 1。在您的循环中,显然不是。您的循环应该从 n 到 1(或 0,但连接一个空字符串没有意义)。

于 2019-10-01T21:41:42.723 回答
0

你可以使用 nfor 循环

    System.out.println("Please input a string: ");
    String string = in.next();

    System.out.println("Please input an integer: ");
    int n = in.nextInt();

    String con = "";
    String tring = string.substring(0,n);
    for(; n>0; n--)
    {
        con += string.substring(0,n-1);
    }
    System.out.println(tring+con);
于 2019-10-01T21:46:32.553 回答