提问人:Vaibhav 提问时间:3/13/2023 最后编辑:AbraVaibhav 更新时间:5/23/2023 访问量:73
在 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
问:
基本上,我有一串数字,该字符串本质上是动态的,无论是内容还是长度,例如“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”,因为索引要么达到字符串长度+,要么变为负数。
答:
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
将字符串的第一个字符追加到末尾,并将字符串追加到索引处。substring
1
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]
评论
substring