有什么办法可以使每个印刷品具有不同的图案

时间:2019-07-03 20:57:53

标签: java string char

如何在此模式上循环以使该模式可以变成这样(用X代替_) 我知道我可以像为每个循环定义n = 0和n + 2一样使它递增2,但是会出现这样的问题

XX_XXXXXXXXXX    
XX_X_XXXXXXXX    
XX_X_X_XXXXXX
public static void main(String[] args)
{
    String a = "XXXXXXXXXXXXX";
    char[]abc = a.toCharArray();
    for(int i=0;i<3;i++)
    {
        int n=2;
        abc[n]='_';
        a = String.valueOf(abc);
        System.out.println(abc);
    }
}

我上面发布的代码是没有循环的代码
如果循环成功,我希望输出将是这样

XX_XXXXXXXXXX    
XXXX_XXXXXXXX    
XXXXXX_XXXXXX  

任何建议或帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

您应该执行以下操作以使输出看起来像预期的那样:

  1. 使用循环变量i代替块变量n作为数组索引。这样可以确保'_'的位置在每一步上都移位
  2. 打印完每一步后,将数组中的'_'恢复为'X'。这使得'_'转移而不是重复

我故意不提供任何代码,因为问题看起来更像是培训任务,并且弄清楚正确的指示应该可以解决问题。

答案 1 :(得分:0)

您可以使用整数'_'来轻松添加并保留要拥有List字符的位置。每次运行主循环时,您都可以通过嵌套循环访问预期的位置。最后,您添加下一个'_'位置,该位置将在下次使用。

import java.util.ArrayList;
import java.util.List;

public static void main(String[] args) {
    String a = "XXXXXXXXXXXXX";
    char[]abc = a.toCharArray();

    List<Integer> placeHolders = new ArrayList<>();
    placeHolders.add(2);
    for(int i=0;i<3;i++)
    {
        for(int j = 0; j < placeHolders.size(); j++)
            abc[placeHolders.get(j)]='_';

        System.out.println(abc);

        //Accessing the latest record of the list
        placeHolders.add(placeHolders.get(placeHolders.size()-1)+2);

    }
}