用Java创建Power Table

时间:2013-11-15 01:21:12

标签: java exponent

我需要在Java中创建一个power表。这将被存储。我发现没办法轻易做到这一点,因为Map只有2个条目。是否有捷径可寻?我需要做的是有一个表(不在GUI上),如下所示:

Base         Power            BaseToPower
1            1                1
5            2                25

等等。我该怎么做?

5 个答案:

答案 0 :(得分:4)

使用Map<int,Map<int,int>> :)第一张地图的基础值,第二张地图的权力和基础值的关键

修改

我认为Map<Integer,Integer[][]>是更好的解决方案

用于放置行

Map<Integer,Integer[][]> mainMap = new HashMap<Integer,Integer[][]>();
Integer[][] row1 = new Integer[1][2];//first base and power
row1[0][0] = 1;
row1[0][1] = 1;
Integer[][] row2 = new Integer[1][2];//second base and power
row2[0][0] = 2;
row2[0][1] = 5;

mainMap.put(1,row1);
mainMap.put(25,row2);

用于撤销值

 for (Map.Entry<Integer, Integer[][]> entry : mainMap.entrySet()) {
        System.out.println("Base= " + entry.getKey() 
            + ", Power= " + entry.getValue()[0][0]
            + ", BaseToPower= " + entry.getValue()[0][1]);

}
//mainMap.get(25); will return base and power array

如果有错误,我没有对错误进行测试

答案 1 :(得分:1)

Java中表结构的常见实现是使用List Maps,因此每行中的Map键是列标题,如下所示:

List<Map<String,Integer>> table = new ArrayList<>();
Map<String,Integer> row1 = new HashMap<>();
row1.put("Base",1);
row1.put("Power",1);
row1.put("BaseToPower",1);
table.add(row1);

然而,更好的解决方案可能是创建一个bean类来表示一个表行。

public class TableRow {
   private int base;
   private int power;
   private int baseToPower;

   ... Getters and Setters ...
}

然后,您可以将这些TableRow对象存储在List<TableRow>LinkedHashMap<Integer,TableRow>中,具体取决于您希望如何访问它们。

答案 2 :(得分:0)

如果您只想查找功能的基础值,可以使用Math.pow(base, power)然后将其转换为int;它可能足够快。或者,如果要紧凑地存储值,可以使用int[][3]

答案 3 :(得分:0)

如果您总是拥有固定长度的权限,我会使用Map<int, Map<int, int>Map<int, Vector<int>>之类的东西,因为使用嵌套地图,您必须手动输入权力;)

答案 4 :(得分:-1)

Power Table in Java

使用Java创建Power Table

import java.util.*;    
class powerseries    
{    
    public static void main(String[] ar)    
    {    
    Scanner o=new Scanner(System.in);    
    int num,i,temp=1,temp2=1;    
    System.out.print("\nEnter Table number for powerseries:  ");    
    num=o.nextInt();    

    for(i=1;i<=10;i++)    
        {    
    System.out.println(num+" ^ "+i+" = "+(temp2*num));    
    temp2=temp2*num; /*multiply coming number*/
        }       
    }   
}