Java 方法显示不同的表内容,重复标题问题

Java 方法显示不同的表内容,重复标题问题,java,class,methods,menu,Java,Class,Methods,Menu,我需要能够使用不同的方法来打印特定的表内容,比如和、乘法或随机表等等。我不知道如何将此内容与行ID分开打印。我遇到的另一个问题是,当我输入“f”重新打印表格时,每次打印时标题都会重复,这会在几次重新打印后创建一个很长的重复标题,有人能帮我吗 原始代码后面是IntTable类,我知道它没有完全填写,但我想在继续之前弄清楚这一点 import java.util.Scanner; public class Assignment6{ public static String returnM

我需要能够使用不同的方法来打印特定的表内容,比如和、乘法或随机表等等。我不知道如何将此内容与行ID分开打印。我遇到的另一个问题是,当我输入“f”重新打印表格时,每次打印时标题都会重复,这会在几次重新打印后创建一个很长的重复标题,有人能帮我吗

原始代码后面是
IntTable
类,我知道它没有完全填写,但我想在继续之前弄清楚这一点

import java.util.Scanner;

public class Assignment6{

    public static String returnMenu(){
        String menu = "Command Options---------------\na: Create a new table\nb: Change the row sizes\nc: Change the column sizes\nd: Change the data types\ne: Chnge the formats\nf: Display the table\ng: Display the log data\n:?: Display this menu\nq: Quit the program\n------------------------------";
        return menu;
    }
    public static void main(String[] arg){
        Scanner scan = new Scanner(System.in);
        String input = "p";
        String output = "NOOOOO!";
        IntTable myTable = new IntTable();

        while (!input.equals("q")){
            System.out.println("Please input a command: ");
            input = scan.nextLine();
            if (input.equals("a")){
                System.out.print("a [Input three integers to initialize table]: ");
                myTable.setRow(scan.nextInt()); myTable.setColumn(scan.nextInt()); myTable.setType(scan.nextInt());
                scan.nextLine();
                myTable.printTable();
            }
            else if (input.equals("b")){
                System.out.print("b [Enter integer to update table row]: ");
                myTable.setRow(scan.nextInt());
                scan.nextLine();
            }
            else if (input.equals("c")){
                System.out.println("c [Enter integer to update column]: ");
                myTable.setColumn(scan.nextInt());
                scan.nextLine();
            }
            else if (input.equals("d")){
                System.out.println("d [Enter integer to update data type]: ");
                myTable.setType(scan.nextInt());
                scan.nextLine();
            }
            else if (input.equals("e")){
                System.out.println("e [Enter integer to update printf format]: ");

            }
            else if (input.equals("f")){
                System.out.println("f [Display table]: ");
                myTable.printTable();
            }
            else if (input.equals("g")){
                System.out.println("g [Display data log]: ");
            }
            else if (input.equals("?")){
                System.out.println(Assignment6.returnMenu());
            }
            else
                System.out.println("Invalid: ***Type \"?\" to get the commands***");
        }

    }
}



public class IntTable{

    private int row, column, type;
    static String log, tFormat;
    final int TYPE_DEFAULT = 0;
    final int TYPE_NUMBERS = 1;
    final int TYPE_SUM = 2;
    final int TYPE_MULTIPLY = 3;
    final int TYPE_RANDOM = 4;
    final int TYPE_POWER = 5;
    final int TYPE_FIBONACCI = 6;

    String beginRow = "   *    |";
    String divider = "-------";
    int count = 1;
    public IntTable(){

    }

    public IntTable(int row, int column, int type){

    }
    public int getRow(){
        return row;
    }
    public int getColumn(){
        return column;
    }
    public int getType(){
        return type;
    }
    public void setRow(int newRow){
        row = newRow;
    }
    public void setColumn(int newColumn){
        column = newColumn;
    }
    public void setType(int newType){
        type = newType;
    }
    public void printTable(){
        int count = 1;



        printTableHeader();

        for(int i = 1; i <row+1; i++){
            System.out.printf("%4d %4s", i, "   |");

            for (int j = 1; j < column+1; j++)
            {
                System.out.printf("%4d", count);
                count++;
            }
            System.out.println();
        }
    }
    private void printTableHeader(){
        for(int i = 1; i < column + 1; i++)
        {
            beginRow+="   "+i;
            divider+="-----";
        }
        System.out.println(beginRow);
        System.out.println(divider);

    }
    private void printTableRowID(int ID){
        ID = row;
        for(int i = 1; i <ID+1; i++){
            System.out.printf("%4d %4s", i, "   |");
            System.out.print(getElement(i, (row-(row-1))));
            System.out.println();
        }

    }
    private int getElement(int c, int r){
        if(type == 0)
            return 0;
        else if(type == 1)
            return c+column;
        else if(type == 2)
            return c+ r;
        else if(type == 3)
            return c*r;
        else if(type == 4)
            return (int)(1 + Math.random()*10);
        else if(type == 5)
            return (int)Math.pow(r, c);
        else
            return r;
    }
    private int pow(int one, int two){
        return (int)Math.pow(one, two);
    }
    private int fibonacci(int fib){
        return fib;
    }
    private int sum(int add, int addd){
        return add + addd;
    }
    private int multiply(int prod, int product){
        return prod * product;
    }
    private int random(int what, int huh){
        return (int)(what + Math.random()*huh);
    }
}
import java.util.Scanner;
公共课堂作业6{
公共静态字符串返回菜单(){
String menu=“命令选项-------------------\na:创建新表\nb:更改行大小\nc:更改列大小\nd:更改数据类型\ne:更改格式\nf:显示表\ng:显示日志数据\n:?:显示此菜单\nq:退出程序\n------------------------------”;
返回菜单;
}
公共静态void main(字符串[]arg){
扫描仪扫描=新扫描仪(System.in);
字符串输入=“p”;
字符串输出=“NOOOOO!”;
IntTable myTable=新IntTable();
而(!input.equals(“q”)){
System.out.println(“请输入命令:”);
输入=scan.nextLine();
if(输入等于(“a”)){
System.out.print(“a[输入三个整数以初始化表格]:”;
myTable.setRow(scan.nextInt());myTable.setColumn(scan.nextInt());myTable.setType(scan.nextInt());
scan.nextLine();
myTable.printTable();
}
else if(输入等于(“b”)){
System.out.print(“b[输入整数以更新表行]:”;
setRow(scan.nextInt());
scan.nextLine();
}
else if(输入等于(“c”)){
System.out.println(“c[输入整数以更新列]:”;
setColumn(scan.nextInt());
scan.nextLine();
}
else if(输入等于(“d”)){
System.out.println(“d[输入整数以更新数据类型]:”;
setType(scan.nextInt());
scan.nextLine();
}
else if(输入等于(“e”)){
System.out.println(“e[输入整数以更新printf格式]:”;
}
else if(输入等于(“f”)){
System.out.println(“f[显示表]:”);
myTable.printTable();
}
else if(输入等于(“g”)){
System.out.println(“g[显示数据日志]:”);
}
else if(输入。等于(“?”){
System.out.println(Assignment6.returnMenu());
}
其他的
System.out.println(“无效:**Type\”?\“获取命令***”);
}
}
}
公共类IntTable{
私有int行、列、类型;
静态字符串日志,tFormat;
最终整数类型\默认值=0;
最终整数类型_数=1;
最终整数类型_和=2;
最终整数类型_乘法=3;
最终整数类型_RANDOM=4;
最终int类型_功率=5;
最终整数类型_FIBONACCI=6;
字符串beginRow=“*|”;
字符串分隔符=“----”;
整数计数=1;
公共IntTable(){
}
公共IntTable(int行、int列、int类型){
}
public int getRow(){
返回行;
}
public int getColumn(){
返回列;
}
公共int getType(){
返回类型;
}
公共void setRow(int newRow){
行=新行;
}
公共void setColumn(int newColumn){
column=newColumn;
}
公共void集合类型(int newType){
类型=新类型;
}
公共空打印表(){
整数计数=1;
printTableHeader();

对于(int i=1;i头重复的原因是您没有重新初始化变量(beginRow和divider)

调用printTable方法时,变量
String beginRow=“*|”;String divider=“------”;
被重新定义
您需要重新初始化变量(beginRow分隔符

看看我修改的代码

私有void printTableHeader() {

        for(int i = 1; i < column + 1; i++)
        {
            beginRow+="   "+i;
            divider+="-----";
        }
        System.out.println(beginRow);
        System.out.println(divider);

        beginRow = "   *    |";
        divider = "-------";
  }