我无法完成此模式的逻辑,并且尝试了各种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);
}
}
}
}
答案 0 :(得分:1)
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
的仪式比实际工作要大,但一旦得到,就很清楚这段代码的作用
答案 1 :(得分:1)
可以简单地将代码简化为一个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
获取String
的第一个字符,然后将其附加到charAt(0)
的末尾(跳过该循环)来创建新的substring
第一个字符。