我希望能够搜索我的数组并找到用户输入的字符串中的字符?所以,如果用户键入" message"我希望它返回' m'的索引。 ' E' ' S'等等。我该怎么做?到目前为止,我的代码是:
import java.util.ArrayList;
import java.util.Scanner;
public class Matrix {
private char[][] matrix = new char[6][6];
private int[] usedNumbers = new int[50];
{for(int x = 0; x < usedNumbers.length; x++) usedNumbers[x] = -1;}
private final char[] CIPHER_KEY = {'A','D','F','G','V','X'};
private final String validChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
public Matrix() {
int random;
for(int i = 0; i < CIPHER_KEY.length; i++) {
for(int j = 0; j < CIPHER_KEY.length; j++) {
validation: while(true) {
random = (int)(Math.random()*validChars.length()-1);
for(int k = 0; k < usedNumbers.length; k++) {
if(random == usedNumbers[k]) continue validation;
else if(usedNumbers[k]==-1) usedNumbers[k] = random;
}
break;
}
matrix[i][j] = validChars.split("")[random].charAt(0);
}
}
}
public void searchMatrix(){
Scanner console = new Scanner (System.in);
String phrase = "";
System.out.println("\n Enter the message you would like "
+ "to encrypt with the cipher: \n");
phrase = console.nextLine();
char[] phraseSplit = phrase.toCharArray();
console.close();
}
public String toString() {
String output = " A D F G V X\n";
for(int i = 0; i < CIPHER_KEY.length; i++) {
output += CIPHER_KEY[i] + " ";
for(int j = 0; j < CIPHER_KEY.length; j++) {
output += matrix[i][j] + " ";
}
output += "\n";
}
return output;
}// toString end
}
我在网上寻找过教程,但找不到能帮助我解决这个问题的教程!救命?我不知道接下来该做什么。
答案 0 :(得分:1)
如果我没有误会,你几乎就在那里。您需要做的就是在获得phraseSplit
之后添加嵌套循环。
for (int k=0; k<phraseSplit.length; k++) {
for (int i=0; i<matrix.length; i++) {
for (int j=0; j<matrix[i].length; j++) {
if (phraseSplit[k] == matrix[i][j]) {
System.out.printf("%c at %d, %d\n", phraseSplit[k], i, j);
}//end if
}//end for j
}//end for i
}//end for k
可能有更好的方法。此外,Sasha的shuffle()
是一个非常好的建议。