たとえば、すべての要素が4xマイナス:"----"である2次元テーブル3x2を取得しました。たとえば32のプログラムで書いた場合、最初の数字はそれが何であるかを示し、2番目は何個の数字が並んでいるかを示します。
それは私のテーブルをこのようにします(32):
---- ---- 33-- ----
---- ---- -> ---- ----
---- ---- ---- ----
次に、別の1つ(53)を作成すると、テーブル[0] [0]が空の場合はチェックされ、空でない場合はテーブル[1][0]とテーブル[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();
}}
}
しかし、32番を挿入すると、次のようになります。
33-- 33--
33-- 33--
33-- 33--
最小のテーブルと挿入番号をチェックするプログラムを作成するにはどうすればよいですか?