Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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/3/arrays/13.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_Arrays_Multidimensional Array - Fatal编程技术网

Java 在二维表中添加数字

Java 在二维表中添加数字,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,例如,我得到了二维表3x2,其中所有元素都有4x负号:“---”。如果我在程序中编写示例32。第一个数字告诉我们它是什么数字,第二个数字是多少 它将使我的桌子变成这样(32): 然后,当我们编写另一个(53):如果表[0][0]为空,它将检查表[1][0],如果表[0][1]为空,它将检查表[1],如果表[0][1]都为空,它将选择数字较小的表,在本例中为表[0][1] 33-- ---- 33-- 555- ---- ---- -> ---- ---- ---- ----

例如,我得到了二维表3x2,其中所有元素都有4x负号:“---”。如果我在程序中编写示例32。第一个数字告诉我们它是什么数字,第二个数字是多少

它将使我的桌子变成这样(32):

然后,当我们编写另一个(53):如果表[0][0]为空,它将检查表[1][0],如果表[0][1]为空,它将检查表[1],如果表[0][1]都为空,它将选择数字较小的表,在本例中为表[0][1]

33-- ----      33-- 555-
---- ----   -> ---- ----
---- ----      ---- ----
我们可以在那里输入其他数字:

33-- 555-      33-- 555-
---- ----   -> 444- 22--
---- ----      333- 222-
我们在空的地方插入数字-当所有的地方都不是空的时候,我们在那个里插入数字 更多的是“-”符号——我们取42号,在33号——改为3344号

33-- 555-      3344 555-
444- 22--   -> 444- 22--
333- 222-      333- 222-
如果我们想在不够“-”的地方插入更多的数字,程序结束

我是这样开始的:

  import java.util.Scanner;
import java.lang.Math.*;

public class Skladisce2
{
    public static int dolzina;
    public static int sirina;
    public static int enote;
    public static int tabela[][][];
        ////////////////////////////////////
        //// PREGLED VRSTIC
        ////////////////////////////////////

    public static boolean Vstavi(int barva, int visina) {
                int pozdolzina = 0;
                int pozsirina = 0;
                int najbolProsto = 0;
                    for(int j=0; j<dolzina; j++) {
                        for(int i=0; i<sirina; i++) {
                            int prosto=0;
                            for(int k=0;k<enote;k++) {
                                if( tabela[j][i][k]==0){
                                prosto++;


                                }
                                if( prosto>najbolProsto ) {
                                pozdolzina = i;
                                pozsirina = j;
                                najbolProsto = prosto;

                                for (int l=enote-najbolProsto; ((l<enote) &&(visina>0));  l++) {
                                    tabela[pozdolzina][pozsirina][l] = barva;


                                    visina--;}
                                    continue;


                }k++;

                            }
                        }

                    }   

                return true;
        }   

        /////////////////////////////////////
        ////   IZPIS TABELE
       //////////////////////////////////////
        public static void Izpis() {
            for (int i=0; i<dolzina; i++){
                for (int j=0; j<sirina; j++){
                    for (int k=0; k<enote; k++) {
                        if(tabela[i][j][k] == 0) {
                            System.out.print("-");
                            }
                        else{
                            System.out.print(tabela[i][j][k]);
                            }
                    }
                    System.out.print(" ");
                }
                System.out.println();
            }

        }

    public static void main (String[] args) {   

        Scanner vnos_stevila = new Scanner(System.in);
        System.out.print("Insert dimension: ");
        int vnos = vnos_stevila.nextInt();

        // int vnos razdeli na podenote - prva številka je dolžina, druga širina in tretja enota
        dolzina = Integer.parseInt(Integer.toString(vnos).substring(0,1));
        sirina = Integer.parseInt(Integer.toString(vnos).substring(1,2));
        enote = Integer.parseInt(Integer.toString(vnos).substring(2,3));

        // izpis tabele s črtami
        tabela= new int[dolzina][sirina][enote];

            // izriše črtice
            Izpis();



          // VPIS SODOV
         while (true){
            System.out.print("Insert color and number");
            int sod = vnos_stevila.nextInt();
            int dolzinaIzpisa =  (int)(Math.log10(sod)+1);



            int barva = Integer.parseInt(Integer.toString(sod).substring(0,1));
            int visina = Integer.parseInt(Integer.toString(sod).substring(1,2));

            Vstavi(barva,visina);   

            Izpis();
            }}
}   

如何制作程序,在哪里检查最低的表和插入编号?

只需搜索最佳空闲插槽并插入即可。你可能会发现,把你拥有的东西想象成一个三维数组,而不是二维数组更容易

import java.io.Console;


public class ArrayDemo {
private final int sizeX, sizeY, sizeZ;
private final int[][][] values;

public ArrayDemo() {
    this(2,3,4);
}

public ArrayDemo(int x, int y, int z) {
    values = new int[x][y][z];
    sizeX = x;
    sizeY = y;
    sizeZ = z;

    for(int i=0;i<x;i++) {
        for(int j=0;j<y;j++) {
            for(int k=0;k<z;k++) {
                values[i][j][k]=-1;
            }
        }
    }
}

public boolean insert(int value, int count) {
    // find first slot with enough room
    int posX = -1;
    int posY = -1;
    int bestFree = 0;

    // locate largest available slot
    for(int j=0;j<sizeY;j++) {
        for(int i=0;i<sizeX;i++) {
            int free=0;
            for(int k=0;k<sizeZ;k++) {
                if( values[i][j][k]==-1 ) free++;
            }
            if( free>bestFree ) {
                posX = i;
                posY = j;
                bestFree = free;
            }
        }
    }

    // did we find a slot?
    if( bestFree<count ) return false;

    // found slot, insert data
    for(int k=sizeZ-bestFree;(k<sizeZ) && (count>0);k++) {
        values[posX][posY][k] = value;
        count--;
    }
    return true;
}


public String toString() {
    StringBuilder buf = new StringBuilder();
    for(int j=0;j<sizeY;j++) {
        for(int i=0;i<sizeX;i++) {
            if( i>0 ) buf.append(' ');
            for(int k=0;k<sizeZ;k++) {
                if( values[i][j][k]==-1 ) {
                    buf.append('-');
                } else {
                    buf.append(Character.forDigit(values[i][j][k], 36));
                }
            }
        }
        buf.append('\n');
    }
    return buf.toString();
}


public static void main(String[] args) {
    ArrayDemo array = new ArrayDemo();
    Console cons = System.console();
    while( true ) {
        String in = cons.readLine();
        in = in.trim();
        if( in.length() != 2 ) {
            cons.printf("Please supply two digits: value and number\n");
            continue;
        }
        int inputVal = Character.digit(in.charAt(0),36); 
        int inputNum = Character.digit(in.charAt(1),36);
        if( inputVal==-1 || inputNum==-1 ) {
            cons.printf("Please supply two digits: value and number\n");
            continue;
        }

        if( array.insert(inputVal,inputNum) ) {
            cons.printf("Data inserted OK\n%s\n", array.toString());
        } else {
            cons.printf("Data could not be inserted. Finished. Final array is:\n\n%s\n",array.toString());
            return;
        }
    }
}
}
导入java.io.Console;
公共类ArrayDemo{
私人最终int sizeX、sizeY、sizeZ;
私有最终int[][]值;
公共ArrayDemo(){
这(2,3,4);
}
公共ArrayDemo(整数x,整数y,整数z){
数值=新整数[x][y][z];
sizeX=x;
sizeY=y;
sizeZ=z;

对于(int i=0;这是家庭作业吗?当我在3*3表格中更改它时,我遇到了问题-因为它必须转到选中的对角线,那里是空的,谢谢
33-- 33--     
33-- 33--   
33-- 33--     
import java.io.Console;


public class ArrayDemo {
private final int sizeX, sizeY, sizeZ;
private final int[][][] values;

public ArrayDemo() {
    this(2,3,4);
}

public ArrayDemo(int x, int y, int z) {
    values = new int[x][y][z];
    sizeX = x;
    sizeY = y;
    sizeZ = z;

    for(int i=0;i<x;i++) {
        for(int j=0;j<y;j++) {
            for(int k=0;k<z;k++) {
                values[i][j][k]=-1;
            }
        }
    }
}

public boolean insert(int value, int count) {
    // find first slot with enough room
    int posX = -1;
    int posY = -1;
    int bestFree = 0;

    // locate largest available slot
    for(int j=0;j<sizeY;j++) {
        for(int i=0;i<sizeX;i++) {
            int free=0;
            for(int k=0;k<sizeZ;k++) {
                if( values[i][j][k]==-1 ) free++;
            }
            if( free>bestFree ) {
                posX = i;
                posY = j;
                bestFree = free;
            }
        }
    }

    // did we find a slot?
    if( bestFree<count ) return false;

    // found slot, insert data
    for(int k=sizeZ-bestFree;(k<sizeZ) && (count>0);k++) {
        values[posX][posY][k] = value;
        count--;
    }
    return true;
}


public String toString() {
    StringBuilder buf = new StringBuilder();
    for(int j=0;j<sizeY;j++) {
        for(int i=0;i<sizeX;i++) {
            if( i>0 ) buf.append(' ');
            for(int k=0;k<sizeZ;k++) {
                if( values[i][j][k]==-1 ) {
                    buf.append('-');
                } else {
                    buf.append(Character.forDigit(values[i][j][k], 36));
                }
            }
        }
        buf.append('\n');
    }
    return buf.toString();
}


public static void main(String[] args) {
    ArrayDemo array = new ArrayDemo();
    Console cons = System.console();
    while( true ) {
        String in = cons.readLine();
        in = in.trim();
        if( in.length() != 2 ) {
            cons.printf("Please supply two digits: value and number\n");
            continue;
        }
        int inputVal = Character.digit(in.charAt(0),36); 
        int inputNum = Character.digit(in.charAt(1),36);
        if( inputVal==-1 || inputNum==-1 ) {
            cons.printf("Please supply two digits: value and number\n");
            continue;
        }

        if( array.insert(inputVal,inputNum) ) {
            cons.printf("Data inserted OK\n%s\n", array.toString());
        } else {
            cons.printf("Data could not be inserted. Finished. Final array is:\n\n%s\n",array.toString());
            return;
        }
    }
}
}