Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 简单数字发生器逻辑_Java - Fatal编程技术网

Java 简单数字发生器逻辑

Java 简单数字发生器逻辑,java,Java,我有一个电话号码0127 我正在尝试用JAVA逻辑生成数字跟随序列 0 1 2 7 01 12 27 012 127 0127 1270 2701 7012 01270 12701 27012 . . 我正在打破我的头:-)将它分为两个步骤:子字符串和超字符串。 有时,解决大问题的最佳方法是将工作分成更容易解决的小问题 对于子字符串,请使用嵌套For循环 循环子字符串长度从1到string.length()-1 将起始字符从0循环到string.length()-1-substringLeng

我有一个电话号码0127

我正在尝试用JAVA逻辑生成数字跟随序列

0
1
2
7
01
12
27
012
127
0127
1270
2701
7012
01270
12701
27012
.
.

我正在打破我的头:-)

将它分为两个步骤:子字符串和超字符串。

有时,解决大问题的最佳方法是将工作分成更容易解决的小问题

对于子字符串,请使用嵌套For循环

  • 循环子字符串长度从
    1
    string.length()-1
  • 将起始字符从
    0
    循环到
    string.length()-1-substringLength
  • 在内部循环中,从给定的起始字符生成给定长度的子字符串。这将生成所有子字符串


    对于超弦,您只需要一个循环来拾取起始角色。对于循环中的每个项目,从该字符开始构建字符串,直到给定长度,从最后一个字符换行到第一个字符。

    我会将数字转换为
    字符串
    对象,然后转换为字符数组

    从那里,您可以使用以下逻辑对数组进行迭代:

            int MAX_LENGTH = 10;
            char[] array = "0127".ToCharArray();
            for (int i = 0; i < MAX_LENGTH; i++)
            {
                for (int offset = 0; offset < array.Length; offset++)
                {
                    String disp = "";
                    for (int j = 0; j <= i; j++)
                    {
                        int index = j + offset;
                        while (index >= array.Length)
                            index -= array.Length;
                        disp += array[index];
                    }
                    Console.WriteLine(disp);
                }
            }
    
    int MAX_LENGTH=10;
    char[]array=“0127”。ToCharArray();
    对于(int i=0;i
    MAX_LENGTH
    更改为输出字符串的最大长度

    以下是此代码生成的输出:
    0
    0127
    (包括)的前几行都是
    {0,1,2,7}
    的子序列(缺少空集)

    对于其余部分,它就像一个戒指,你选择一个起始号码,然后朝一个方向“走”
    n
    步:

                   0
                  / \
                 7   1
                  \ /
                   2
    
    这将产生:

    n=1: 0,    1,    2,    7
    n=2: 01,   12,   27,   70
    n=3: 012,  127,  270,  701
    n=4: 0127, 1270, 2701, 7012
    
    但我看不出这两个部分之间有什么联系——你确定吗,你问题中的顺序是完整的,没有数字缺失?尤其是70、270和701?

    int MAX_LENGTH=5;
    
    int MAX_LENGTH = 5;
            String[] numStr = {"0","1","2","7"};
            for (int i = 0; i < MAX_LENGTH; i++)
            {
                for (int offset = 0; offset < numStr.length; offset++)
                {
                    if(i>0 && offset+1 == numStr.length) continue;
                    String disp = "";
                    for (int j = 0; j <= i; j++)
                    {
                        int index = j + offset;
                        if (index >= numStr.length)
                            index -= numStr.length;
                        disp += numStr[index];
                    }
                    System.out.println(disp);
    
                }
            }
    
    字符串[]numStr={“0”、“1”、“2”、“7”}; 对于(int i=0;i0&&offset+1==numStr.length)继续; 字符串disp=“”; 对于(int j=0;j=numStr.length) 索引-=numStr.length; disp+=numStr[index]; } 系统输出打印项次(显示); } }
    这是我的解决方案。使用测试编号执行,并生成相同的序列:

    public static void printSequence(String number) {
        final char[] charNumber = number.toCharArray();
        final int sizeNumber = number.length();
    
        int MAX_ITER = 5;
        for (int i = 0; i < MAX_ITER; i++) {
            for (int offset = 0; offset < sizeNumber; offset++) {
                String subSequence = "";
                for (int j = 0; j <= i; j++) {
                    int index = (j + offset) % sizeNumber;
                    subSequence += charNumber[index];
                }
                System.out.println(subSequence);
            }
        }
    }
    
    公共静态无效打印序列(字符串编号){
    final char[]charNumber=number.toCharArray();
    final int-sizeNumber=number.length();
    int MAX_ITER=5;
    对于(int i=0;i对于(int j=0;j我假设这是家庭作业?是的..对不起,伙计们,我花了太多时间搞不懂这个愚蠢的东西。你们看到了什么模式吗?到目前为止你们都搞明白了什么?我的进步..0,1,2,3,4,5,6,7…50…6,5,4,3,2,0->这是哪里iam@Soft-是因为您无法理解模式,还是代码有问题,或者两者都有?发布什么你认为模式是这样的。我不得不考虑这个问题而不是实际问题。只要说“:)+1考虑它而不是实际问题!我认为
    O(n^3)
    对于家庭作业来说是可以接受的运行时复杂性所有发布的答案都是
    O(n^3)
    。呃,这不是Java,它不会产生相同的序列(但我仍然认为,软件的问题遗漏了一些数字——因此,翻译成Java的算法可能就是解决问题的算法;)我对此做了一些小改动,得到了预期的结果。我忘了在内饰上将
    if
    更改为
    。我更新了它并发布了一张结果图片。@Andreas,我相信它确实产生了相同的序列:)正如我所说的,我确信这是解决方案,但70、270和701不在问题的顺序中。@Soft-请仔细检查您的问题!!很好。请确保将(index>=numStr.length)
    中的if(index>=numStr.length)
    行更改为
    ,而(index>=numStr.length)
    输出与您的问题不同