有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用枚举创建算术表

我在做一些例子时,被这个问题困住了:

您需要开发一个程序,根据用户的开始和结束范围以及表格类型打印乘法或加法表格。 该程序将使用2D数组来计算表格。 该程序将利用该系统。出来printf()方法允许格式化输出。 该程序将有两种具有以下名称和签名的方法: public void createTable(int begin、int finish、TableType TableType) public void printTable() 将提供一个额外的方法来检查传入main的参数(称为argumentCheck())。如果传入的参数有效,此方法将返回true,并将设置数据成员:start、end和tableType。 没有构造函数,也没有任何其他方法(包括重载方法)。 该类将包含表的数据成员(句柄)(类型为float的2D数组)、表的起始值和结束值的起始值和结束值(ints),以及由{MULT,ADD}组成的枚举类型tableType(tableType)

public class ArithmeticTable {

private TableType tableType;
static int start = 1;
static int end = 10;

public enum TableType { 
    MULT {
        int result(int x, int y) {return x * y;}}, 
    ADD {
        int result(int x, int y) {return x + y;}}
}

public boolean argumentCheck(String[] args){
if(args.length!=3){
  System.err.println("Usage: Main <type> <start> <stop>");
  System.err.println("\tWhere <type> is one of +, \"*\"");
  System.err.println("\tand <start> is between 1 and 100");
  System.err.println("\tand <stop> is between 1 and 100");
  System.err.println("\tand start < stop");
  return false;
}        

if(args[0].charAt(0) == '+')
  tableType = TableType.ADD;
else
  tableType = TableType.MULT;
  int sta;
  int sto;

  try{
    sta = Integer.parseInt(args[1]);
    sto = Integer.parseInt(args[2]);
  }
  catch(NumberFormatException ex){
    System.err.println("Usage: Main <type> <start> <stop>");
    System.err.println("\tWhere <type> is one of +, -, \"*\", /");
    System.err.println("\tand <start> is between 1 and 100");
    System.err.println("\tand <stop> is between 1 and 100");
    System.err.println("\tand start < stop");
    return false;
  }

  if((sta < 1 || sta > 100)||((sto < 1 || sto > 100))){
    System.err.println("Usage: Main <type> <start> <stop>");
    System.err.println("\tWhere <type> is one of +, -, \"*\", /");
    System.err.println("\tand <start> is between 1 and 100");
    System.err.println("\tand <stop> is between 1 and 100");
    System.err.println("\tand start < stop");
    return false;
  }

  if(sta >= sto){
    System.err.println("Usage: Main <type> <start> <stop>");
    System.err.println("\tWhere <type> is one of +, -, \"*\", /");
    System.err.println("\tand <start> is between 1 and 100");
    System.err.println("\tand <stop> is between 1 and 100");
    System.err.println("\tand start < stop");
    return false;
  }

start = sta;
end = sto;
return true;
 }

public void createTable(int begin, int finish, TableType tableType)
{
    int i, result;
    for(i = begin; i <= finish; i++){
        switch(tableType){
            case MULT:
                result = begin * finish;
                break;
            case ADD:
                result = begin + finish;
                break;
            default:
                result = begin * finish;
                break;
        }
    }


}

public void printTable()  
{

}

public static void main(String[] args){
ArithmeticTable table = new ArithmeticTable();
if (table.argumentCheck(args)){
  table.createTable(table.start, table.end, table.tableType);
  table.printTable();
    }
  }
}

我试图使枚举具有基本操作数方法,并将符号(“*”和“+”)放入表中。有什么建议吗


共 (1) 个答案

  1. # 1 楼答案

    这就是你的意思吗

    public enum TableType { 
    
        MULT, 
        ADD;
    
        public static TableType get(char operand) {
            return (operand == '+') ? ADD : ((operand == '*') ? MULT : null);
        }
    
        public int result(int x, int y) {
            return (this == ADD) ? (x + y) : (x * y);
        }
    }
    
    ...
    
    TableType example = TableType.get('*');
    System.out.println(example.result(4, 4)); // 16