Java 优化一组if语句

Java 优化一组if语句,java,optimization,Java,Optimization,任务: 我有两个用随机值[a-z]填充的字符的二维数组,需要找出这个数组中是否有单词“ala”vertilac\horizontal\diagonal 我做了什么: 在我的程序中,我遍历所有字符,并试图在所有维度中找到单词 我想要的是: 我觉得有更明智的方法来完成这项任务,巫婆会: 在不修改程序的情况下使用不同长度的单词 重放一堆if语句,这样就更容易了 这是我目前的代码: Random randomGenerator = new Random(); char[][] arr = new

任务: 我有两个用随机值[a-z]填充的字符的二维数组,需要找出这个数组中是否有单词“ala”vertilac\horizontal\diagonal

我做了什么: 在我的程序中,我遍历所有字符,并试图在所有维度中找到单词

我想要的是: 我觉得有更明智的方法来完成这项任务,巫婆会:

  • 在不修改程序的情况下使用不同长度的单词
  • 重放一堆if语句,这样就更容易了
  • 这是我目前的代码:

    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说得好!下次我会记得的!谢谢!:)