在 java 中,如何从任何特定索引打印字符串的字符,并在到达字符串末尾后再次从索引 0 开始,如果打印的长度不相等

In java how to print chars of a string from any particular index and after reaching end of string again start from index 0 if printed not equal length

提问人:Vaibhav 提问时间:3/13/2023 最后编辑:AbraVaibhav 更新时间:5/23/2023 访问量:73

问:

基本上,我有一串数字,该字符串本质上是动态的,无论是内容还是长度,例如“13579”、“12345789”等。 如果字符串的长度为 n,那么我想从中创建 n 个字符串。 假设字符串是“13579”,那么我必须从它创建 5 个字符串,从不同的索引开始,如下所示:

13579
35791
57913
79135
91357

如何使用适用于所有字符串长度的通用循环来做到这一点?

有人可以帮忙吗?

谢谢!!!

编辑:

这是我尝试过的

public class Pattern28 {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner sc= new Scanner(System.in);
    int n= sc.nextInt();
    int i=1;
    int odd=1;
    String sNum="";
    while(i<=n) {
        int j=1;
        if(i==1) {
        while(j<=n) {
           System.out.print(odd);
         if(i==1 && j<=n) sNum=sNum.concat(Integer.toString(odd)); //to get first row numbers in string
            odd+=2;
            j++;
        }
    }
    //System.out.println("im "+sNum);
    j=i-1;
    if(i!=1) {
        //  int k=i-1;
        while(j<=n) {
            System.out.print(sNum.charAt(j));
            j++;
        }
    }
    System.out.println();
    i++;
}
}
}

最后卡在while循环。每次我在那里做某事时,我最终都会得到“java.lang.StringIndexOutOfBoundsException”,因为索引要么达到字符串长度+,要么变为负数。

Java 数组字符串 对象 while 循环

评论

0赞 f1sh 3/13/2023
你试过什么吗?使用一些长度检查应该可以解决问题。如果你不展示你尝试过的东西,这里没有人会为你做功课。substring
1赞 Vaibhav 3/13/2023
我想出了一个办法:)

答:

0赞 ARNR 3/16/2023 #1

此处解决了类似的问题:生成数字的所有旋转

public class Pattern28 {


        // Function to return the count of digits of n
        static int numberOfDigits(int n)
        {
            int cnt = 0;
            while (n > 0)
            {
                cnt++;
                n /= 10;
            }
            return cnt;
        }

        // Function to print the left shift numbers
        static void cal(int num)
        {
            int digits = numberOfDigits(num);
            int powTen = (int) Math.pow(10, digits - 1);

            for (int i = 0; i < digits - 1; i++)
            {
                int firstDigit = num / powTen;

                // Formula to calculate left shift
                // from previous number
                int left = ((num * 10) + firstDigit) -
                        (firstDigit * powTen * 10);

                System.out.println(left + " ");

                // Update the original number
                num = left;
            }
        }

        // Driver Code
        public static void main(String[] args)
        {
            int num = 1445;
            Scanner sc = new Scanner(System.in);
            System.out.println("Please enter your number ?");
            int n = sc.nextInt();
            cal(n);
        }
    }
0赞 Reilas 5/21/2023 #2

将字符串的第一个字符追加到末尾,并将字符串追加到索引处。substring1

String rotate(String string) {
    return string.substring(1) + string.substring(0, 1);
}
String string = "13579";
do {
    System.out.println(string);
    string = rotate(string);
} while (!string.equals("13579"));

输出

13579
35791
57913
79135
91357

如果需要在数组中包含所有这些值,可以使用以下命令。String

String string = "13579";
String[] strings = new String[string.length()];
for (int index = 0; index < strings.length; index++) {
    strings[index] = string;
    string = rotate(string);
}

输出strings

[13579, 35791, 57913, 79135, 91357]