我无法完成这个模式的逻辑,我已经尝试了每一种if-else语句
这是我正在执行的代码:
import java.util.Scanner;
public class String_pattern_01 {
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
System.out.println("Enter the character in continuation to get the pattern");
String s=sc.next();
int d=s.length();
String s2[]=s.split("");
for(int i=0;i<=s.length();i++)
{
String x= s.substring(i, d);
if(i>=1&i<d)
{
for(i=1;i<d;i++)
{String y=x+x.substring(0,i-1);
System.out.println(y);}
}
else
{
System.out.println(x);
}
}
}
}
发布于 2019-07-12 02:31:39
可以简单地将代码减少到单个for
循环:
Scanner sc = new Scanner(System.in);
System.out.println("Enter the character in continuation to get the pattern");
String s = sc.next();
int d = s.length();
for(int i = 0; i < d; i++)
{
s = s.substring(1, d) + s.charAt(0);
System.out.println(s);
}
示例运行:输入为abcde
的这将输出:
bcdea
cdeab
deabc
eabcd
abcde
循环在每次迭代中创建一个新的String
,方法是使用charAt(0)
获取String
的第一个字符,然后将其附加到跳过第一个字符的substring
的末尾。
发布于 2019-07-12 02:24:58
public static void main(String[] args) {
String input = "abcde";
List<String> asList = input.chars()
.mapToObj(e -> (char) e)
.map(String::valueOf)
.collect(Collectors.toList());
for (int i = 0; i <= input.length(); i++) {
System.out.println(String.join("", asList));
Collections.rotate(asList, -1);
}
}
String
转换为List
,其中列表的每个元素都是单个字符String
并将其打印出来List
,然后重复这是(某种)明确的方法,将String
转换为List
的仪式是比实际工作更大的问题,但一旦我们得到它,这段代码的作用就很清楚了。
https://stackoverflow.com/questions/56995113
复制相似问题