/ / Чи є спосіб отримати ім'я масиву як рядок, щоб я міг викликати правильний у своїй програмі? - java, рядок, багатовимірний масив, вкладені цикли

Чи є спосіб отримати ім'я масиву як рядок, щоб я міг викликати правильний в моїй програмі? - java, string, багатовимірний масив, вкладені цикли

Мені потрібно мати можливість здійснювати пошук по безлічі 2D-масивів та здійснювати пошук даних у масиві та порівнювати їх із даними, що вводяться в метод, коли він викликається. Я намагався використовувати .getClass().getSimpleName() однак це лише повертається int[][] які всі масиви, які я шукаю, цього типу, тому це не допоможе мені розрізнити їх.

Я використовую цю серію коду, щоб визначити правильний масив для виклику:

 public void tempSelection78 (int fRate, int wbTemp, int rcTons, int a, int r)
{
setTitle(TONS_05_78.getClass().getSimpleName());
for (int model = 0; model < 7; model++)
{
String tonChart = tons78FCharts[model];
for (int col = 0; col < 9; col++)
{
for (int row = 0; row < 8; row++)
{
int t = 0;

if (tonChart.equals(TONS_03_78.getClass().getSimpleName()))
{
t = TONS_03_78[col][row];
}
if (tonChart.equals(TONS_04_78.getClass().getSimpleName()))
{
t = TONS_04_78[col][row];
}
if (tonChart.equals(TONS_05_78.getClass().getSimpleName()))
{
t = TONS_05_78[col][row];
}
if (tonChart.equals(TONS_07_78.getClass().getSimpleName()))
{
t = TONS_07_78[col][row];
}
if (tonChart.equals(TONS_09_78.getClass().getSimpleName()))
{
t = TONS_09_78[col][row];
}
if (tonChart.equals(TONS_11_78.getClass().getSimpleName()))
{
t = TONS_11_78[col][row];
}
if (tonChart.equals(TONS_15_78.getClass().getSimpleName()))
{
t = TONS_15_78[col][row];
}
if (rcTons == t)
{
tableButton = new JButton(new ImageIcon(tablesFor78[model], tablesFor78[model]));
break;
}
else
{
tableButton = new JButton(new ImageIcon("CANNOT_FIND_MODEL.GIF", "SCROLL"));
}
}
}
}
for (int model = 0; model < 7; model++)
{
String flowChart = flow78FCharts[model];
for (int col = 0; col < 9; col++)
{
for (int row = 0; row < 8; row++)
{
int t = 0;
if (flowChart.equals(FLOW_03_78.getClass().getSimpleName()))
{
t = FLOW_03_78[col][row];
}
if (flowChart.equals(FLOW_04_78.getClass().getSimpleName()))
{
t = FLOW_04_78[col][row];
}
if (flowChart.equals(FLOW_05_78.getClass().getSimpleName()))
{
t = FLOW_05_78[col][row];
}
if (flowChart.equals(FLOW_07_78.getClass().getSimpleName()))
{
t = FLOW_07_78[col][row];
}
if (flowChart.equals(FLOW_09_78.getClass().getSimpleName()))
{
t = FLOW_09_78[col][row];
}
if (flowChart.equals(FLOW_11_78.getClass().getSimpleName()))
{
t = FLOW_11_78[col][row];
}
if (flowChart.equals(FLOW_15_78.getClass().getSimpleName()))
{
t = FLOW_15_78[col][row];
}
if (fRate == t)
{
tableButton = new JButton(new ImageIcon(tablesFor78[model], tablesFor78[model]));
break;
}
else
{
tableButton = new JButton(new ImageIcon("CANNOT_FIND_MODEL.GIF", "SCROLL"));
}
}
}
}

що я хочу, щоб це сталося tonChart бути встановленим в один із рядків, що містить можливі 2d-масиви для пошуку, за якими це робиться. Однак .getClass().getSimpleName ніколи не налаштовується ні на що, крім int[][] і змушує програму завжди перенаправлятись на оператор else у кінці кожного потрійного вкладеного циклу.

будь-які пропозиції?

Ось приклад масивів, які називаються:

public final int [][] TONS_03_78 =
{{27, 32, 37, 41, 45, 48, -1, -1, -1},
{-1, 41, 45, 50, 55, 59, 64, 68, 70},
{-1, 49, 55, 60, 65, 70, 75, 80, 85},
{-1, -1, 64, 70, 75, 81, 86, 91, 97},
{-1, -1, -1, 80, 86, 92, 98, 103, 109},
{-1, -1, -1, -1, 97, 103, 109, 116, 122},
{-1, -1, -1, -1, -1, 114, 122, 128, 135},
{-1, -1, -1, -1, -1, -1, -1, -1, -1}};
public final int [][] FLOW_03_78 =
{{205, 160, 137, 122, 112, 103, -1, -1, -1},
{-1, 203, 170, 150, 137, 127, 120, 113, 105},
{-1, 245, 205, 180, 163, 150, 140, 133, 127},
{-1, -1, 240, 210, 188, 173, 162, 152, 145},
{-1, -1, -1, 240, 215, 197, 183, 172, 163},
{-1, -1, -1, -1, 242, 220, 205, 193, 183},
{-1, -1, -1, -1, -1, 245, 228, 213, 202},
{-1, -1, -1, -1, -1, -1, -1, -1, -1}};

Відповіді:

0 для відповіді № 1

Я змінив би вашу парадигму.

Я не зовсім впевнений, у чому ваша конкретна проблемає, тож наступний підхід може змінитися, але якби я був на вашому місці, я б створив клас або структуру, яка містить двовимірний масив, а потім якийсь ідентифікатор. (це може бути рядок, або int, або перелік чи що завгодно ще).

Такий підхід не тільки зменшить розмір коду, але і зробить його більш читабельним як для вас, так і для нас.


3 для відповіді № 2

Ви можете розмістити свої масиви на карті: Map<String, int[][]>

Тоді ви можете заповнити свою карту правильними парами: map.put("TONS_09_78", TONS_09_78);

І ваша серія if стає (+ деяка нульова обробка):

return map.get(tonChart)[col][row];

Тепер ваш дизайн виглядає підозрілим, і, можливо, буде кращий спосіб оголосити ваші масиви, що полегшить обробку їх.