如何重新打印从第一个字符到最后一个字符的字符串?

时间:2015-10-26 21:41:49

标签: java

  

给定非空字符串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);
        }
}

4 个答案:

答案 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"
  • x4
  • str.charAt(0)'C'
  • str.charAt(x-1)'e'

进行这些替换,你的循环是:

for(char i = 'C'; i <= 'e'; i++)
{
    System.out.print(i);
}

这有助于您了解问题吗?我认为你有03的循环,而不是'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);

这将打印您正在寻找的序列。