Попытка выяснить, как выполнить вычисление общего значения символов ASCII в строке 2D-массива. Из того, что я понимаю, я должен создать цикл for для цикла через каждый экземпляр внутри массива, но я не уверен, как это сделать. Другим решением, которое мне было дано, было использование HashSet, но я опасаюсь использовать его, потому что у меня нет опыта с ними. Испытательный эксперимент, который я пробовал, проходил через каждый символ массива и, конечно же, добавлял их все, не очень эффективно.Определить значение ASCII строки/столбца в двумерном массиве символов
import java.util.Scanner;
class SmartPuzzleProgram{
public static void main(String[] args){
char[][] table = new char[5][5];
table[0][0] = 'S';
table[0][1] = 'M';
table[0][2] = 'A';
table[0][3] = 'R';
table[0][4] = 'T';
table[1][1] = 'T';
table[1][2] = 'S';
table[1][3] = 'M';
table[2][2] = 'R';
table[2][4] = 'S';
table[3][1] = 'S';
table[3][2] = 'M';
table[4][2] = 'T';
table[4][3] = 'S';
int rows = 5;
int columns = 5;
for(int k = 0; k>=0; k++){
System.out.println(" | 1 | 2 | 3 | 4 | 5 |");
System.out.println("---+---+---+---+---+---+");
System.out.println(" 1 | "+table[0][0]+" | "+table[0][1]+" | "+table[0][2]+" | "+table[0][3]+" | "+table[0][4]+" |");
System.out.println("---+---+---+---+---+---+");
System.out.println(" 2 | "+table[1][0]+" | "+table[1][1]+" | "+table[1][2]+" | "+table[1][3]+" | "+table[1][4]+" |");
System.out.println("---+---+---+---+---+---+");
System.out.println(" 3 | "+table[2][0]+" | "+table[2][1]+" | "+table[2][2]+" | "+table[2][3]+" | "+table[2][4]+" |");
System.out.println("---+---+---+---+---+---+");
System.out.println(" 4 | "+table[3][0]+" | "+table[3][1]+" | "+table[3][2]+" | "+table[3][3]+" | "+table[3][4]+" |");
System.out.println("---+---+---+---+---+---+");
System.out.println(" 5 | "+table[4][0]+" | "+table[4][1]+" | "+table[4][2]+" | "+table[4][3]+" | "+table[4][4]+" |");
System.out.println("---+---+---+---+---+---+");
System.out.println("Enter a row (1-5): ");
Scanner scRow = new Scanner(System.in);
int m = scRow.nextInt();
System.out.println("Enter a column (1-5): ");
Scanner scCol = new Scanner(System.in);
int n = scCol.nextInt();
System.out.println("Enter a letter (S, M, A, R or T): ");
Scanner scChar = new Scanner(System.in);
char c = scChar.next().charAt(0);
if (m < 1 || m > 5){
System.out.println("Invalid: Enter a valid row. ");
}
else if (n < 1 || n > 5){
System.out.println("Invalid: Enter a valid column. ");
}
else if (c != 'S' && c != 'M' && c != 'A' && c != 'R' && c != 'T'){
System.out.println("Invalid: Enter a valid character. ");
}
else{
table[(m-1)][(n-1)] = c;
}
//if ((int)table[0][] == 391 && (int)table[1][] == 391 && (int)table[2][] == 391 && (int)table[3][] == 391 && (int)table[4][] == 391
// && (int)table[][0] == 391 && (int)table[][1] == 391 && (int)table[][2] == 391 && (int)table[][3] == 391 && (int)table[][4] == 391){
// System.out.println("Congrats! You win!");
//}
}
}
}
Что должно произойти в том, что, как только пользователь получил S M A R и Т в 5-символьной строке покрывающей весь массив 5x5 является то, что игра объявляет пользователь победителя. Это можно рассчитать путем добавления значений ASCII, которые в конечном итоге равны 391 в любом направлении. Если у кого-то есть решение с предпочтительным для цикла, это было бы здорово.
Вам нужна вложенная петля. –
Возможно, вы сможете использовать один сканер вместо трех. –
Что произойдет, если строка содержит S M A S S? – ajb