Java 优化一组if语句
任务: 我有两个用随机值[a-z]填充的字符的二维数组,需要找出这个数组中是否有单词“ala”vertilac\horizontal\diagonal 我做了什么: 在我的程序中,我遍历所有字符,并试图在所有维度中找到单词 我想要的是: 我觉得有更明智的方法来完成这项任务,巫婆会:Java 优化一组if语句,java,optimization,Java,Optimization,任务: 我有两个用随机值[a-z]填充的字符的二维数组,需要找出这个数组中是否有单词“ala”vertilac\horizontal\diagonal 我做了什么: 在我的程序中,我遍历所有字符,并试图在所有维度中找到单词 我想要的是: 我觉得有更明智的方法来完成这项任务,巫婆会: 在不修改程序的情况下使用不同长度的单词 重放一堆if语句,这样就更容易了 这是我目前的代码: Random randomGenerator = new Random(); char[][] arr = new
Random randomGenerator = new Random();
char[][] arr = new char[50][50];
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = (char) (randomGenerator.nextInt(26)+97);
}
}
System.out.println();
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
boolean ala = false;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
if (j>1) {
if (arr[i][j] == 'a' && arr[i][j - 1] == 'l' && arr[i][j - 2] == 'a') {//left
ala = true;
System.out.println(i + " " + j);
}
}
if (j<arr[i].length-2) {
if (arr[i][j] == 'a' && arr[i][j + 1] == 'l' && arr[i][j + 2] == 'a') {//rigth
ala = true;
System.out.println(i + " " + j);
}
}
if (i<arr.length-2) {
if (arr[i][j] == 'a' && arr[i + 1][j] == 'l' && arr[i + 2][j] == 'a') {//bot
ala = true;
System.out.println(i + " " + j);
}
}
if (i>1) {
if (arr[i][j] == 'a' && arr[i-1][j] == 'l' && arr[i - 2][j] == 'a') {//top
ala = true;
System.out.println(i + " " + j);
}
}
if (i<arr.length-2 && j<arr[i].length-2) {
if (arr[i][j] == 'a' && arr[i + 1][j + 1] == 'l' && arr[i + 2][j + 2] == 'a') {//bot&rigth
ala = true;
System.out.println(i + " " + j);
}
}
if (i>1 && j>1) {
if (arr[i][j] == 'a' && arr[i - 1][j - 1] == 'l' && arr[i - 2][j - 2] == 'a') {//top&left
ala = true;
System.out.println(i + " " + j);
}
}
if (i>1 && j<arr[i].length-2) {
if (arr[i][j] == 'a' && arr[i - 1][j + 1] == 'l' && arr[i - 2][j + 2] == 'a') {//top&rigth
ala = true;
System.out.println(i + " " + j);
}
}
if (i<arr.length-2 && j>1) {
if (arr[i][j] == 'a' && arr[i + 1][j - 1] == 'l' && arr[i + 2][j - 2] == 'a') {//bot&left
ala = true;
System.out.println(i + " " + j);
}
}
}
}
System.out.println(ala);
Random Random generator=new Random();
字符[][]arr=新字符[50][50];
对于(int i=0;i1){
如果(arr[i][j]='a'&&arr[i][j-1]='l'&&arr[i][j-2]=='a'){//左
ala=真;
系统输出打印项次(i+“”+j);
}
}
if(j1&&j优化代码的一种方法是使用更快的速度。我担心您将不得不重新实现这些,因为您没有将数据存储在任何公共数据结构中,而是使用自定义数组访问。注意,这不会使您的代码变得更简单,即使您可以通过重构使其看起来更好
为了简化代码,您可以将数据存储在表示行、列和对角线的字符串中,这样您就可以使用String.contains
/String.indexOf
或前面提到的任何复杂算法。请注意,数据占用空间将比使用数组时大。请格式化以使其可读……只是为了澄清:@JorgeCampos这不是一个“有效”的关闭原因。关闭原因应该说明问题在当前网站上偏离主题的原因。您应该在关闭原因中写什么(而不是“属于…”)就是您现在的评论所说的:“所以规则规定我们帮助解决特定问题”,这就足够了:)@Vogel612说得好!下次我会记得的!谢谢!:)