繁体   English   中英

使项目更加OO Java

[英]Make a project more OO Java

我已经制作了一个在同一个程序中运行的12 x 12表,但是我想把它设为OO以便我可以将“public static void main”放在另一个“testfile”中,它仍然可以正常运行..我在使用OO方法时遇到了一些问题,我真的需要帮助......这就是我的代码:

import java.util.Scanner;
import java.util.Arrays;
import java.util.Random;

public class PlayingArea {
    public static void main(String[] args) {
        Random r = new Random();
        Scanner input = new Scanner(System.in);
        System.out.println("How many regions would you like (2- 4)");
        int region = input.nextInt();
        String letters = "";
        while(letters.length() < 2) {
            if (region == 4) {
                letters= "EFGH";
            }
            if (region == 3) {
                letters= "EFG";
            } else if (region == 2) {
                letters= "EF";
            } else if (region < 2) {
                System.out.println("You inputed a wrong value, try again...");
            }
        }
        int N = letters.length();
        char [][] letter = new char[12][12];

        for (int j = 0; j < letter.length; j++) {

            for(int i=0; i < letter.length; i++) {
                letter[i][j] = letters.charAt(r.nextInt(N)) ;
            }
        }

        for (char[] letterRow : letter)
            System.out.println(Arrays.toString(letterRow));
    }
}

如果你对java比较陌生,那你就做得很好。 请注意,如果输入的数字超出2-4,则程序中存在无限循环(在下面修复)。

首先,您的类PlayingArea需要一些成员变量来表示状态。

第一个是String letters (EF或EFG或EFGH),它通过下面代码中的构造函数初始化。

第二个是char[][] grid (在代码中从letter重命名),在populate()方法中为其赋值,该字母将字母放入网格中。

另一种方法gridAsString()就是这样做的。

如果您愿意, public static void main现在可以很容易地移动到另一个类。

玩得开心。

public class PlayingArea {
    private String letters;
    private char[][] grid;

    public PlayingArea(String letters) {
        this.letters = letters;
    }

    public void populate() {
        int n = letters.length();
        grid = new char[12][12];

        Random r = new Random();
        for (int j = 0; j < grid.length; j++) {
            for (int i = 0; i < grid.length; i++) {
                grid[i][j] = letters.charAt(r.nextInt(n));
            }
        }

    }

    public String gridAsString() {
        StringBuilder sb = new StringBuilder();
        for (char[] letterRow : grid) {
            sb.append(Arrays.toString(letterRow)).append('\n');
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("How many regions would you like (2- 4)");
        String letters = "";
        while (letters.length() < 2) {
            int region = input.nextInt();
            if (region == 4) {
                letters = "EFGH";
            } else if (region == 3) {
                letters = "EFG";
            } else if (region == 2) {
                letters = "EF";
            } else {
                System.out.println("You inputed a wrong value, try again...");
            }
        }
        PlayingArea playingArea = new PlayingArea(letters);
        playingArea.populate();
        System.out.println(playingArea.gridAsString());
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM