给定非空字符串str,如“Code”,打印一个像“CCoCodCode”的字符串。在字符串中的每个索引处,您必须将字符串重新打印到该索引。
我知道我写的这段代码确实存在问题,因为答案应该是CCoCodCode,而是它给了我字母表!我不知道应该怎么改变它。
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
String str = scan.next();
int x = str.length();
for(char i = str.charAt(0); i <= str.charAt(x-1); i++)
{
System.out.print(i);
}
}
答案 0 :(得分:3)
char
数据类型可以视为数字;你可以增加它并将其作为数字来操纵。
你真正想要的是要打印str
的连续子串。循环遍历int
,表示要打印的子字符串的结束位置。
for (int i = 0; i < str.length(); i++)
{
System.out.print(str.substring(0, i + 1));
}
substring
is exclusive的结束索引参数,这就是我添加1
。
答案 1 :(得分:1)
我们说str
是"Code"
。我们可以执行一些心理替代,看看你的循环会发生什么。
str
是"Code"
x
是4
str.charAt(0)
是'C'
str.charAt(x-1)
是'e'
进行这些替换,你的循环是:
for(char i = 'C'; i <= 'e'; i++)
{
System.out.print(i);
}
这有助于您了解问题吗?我认为你有0
到3
的循环,而不是'C'
到'e'
...
答案 2 :(得分:0)
正在输出字母,因为您正在打印计数器而不是字符串中的字符!
实际上,for循环的第一次迭代会将i设置为第一个字符,打印出来,然后操作i++
将i
增加1。等等,所以如果第一个字符是“C”,那么i = 'C'
,i++
是什么?
事实证明,字符可以用数字表示。例如,'C'的值为67.因此递增它使得它为68,代表'D'。因此,如果您在“代码”上运行循环,它将增加您的计数器4次,给出“CDEF”。如果你运行“Codecodecode”,这将使循环运行12次,给出“CDEFGHIJKLMN”。
你真正想要的是通过索引循环遍历字符串:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.next();
int length = str.length();
for (int i = 0; i < length; i++) {
System.out.print(str.substring(0, i + 1));
}
}
答案 3 :(得分:0)
许多方法可以完成它,假设我们有来自用户的输入存储在一个名为&#34; c&#34; ...然后......
的字符串中 String c = "Code";
for (int i = 0; i < c.length(); i++) {
System.out.print(c.substring(0, i));
}
System.out.print(c);
这将打印您正在寻找的序列。