⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 naturalnumbertable.java

📁 Java版的SAT求解器
💻 JAVA
字号:
/*
 * NaturalNumberTable.java	1.1 05/11/08
 *
 * Copyright 2005 Positronic Software.
 *
 *
 */

package positronic.satisfiability.naturalnumbertable;

import positronic.satisfiability.bitstring.IBitString;
import positronic.satisfiability.exceptions.NaturalNumberTableException;
import positronic.satisfiability.naturalnumber.INaturalNumber;
import positronic.satisfiability.naturalnumber.NaturalNumber;
import positronic.satisfiability.naturalnumbertable.INaturalNumberTable;

public class NaturalNumberTable implements INaturalNumberTable
{
  /**
   * A static integer which records the number of <tt>NaturalNumberTable</tt>'s 
   * created without specifying a name.
   */
  private static int nNTCount;
  
  private INaturalNumber[][] data;
  
  private String name;
  
  public NaturalNumberTable(INaturalNumber[][] data) throws NaturalNumberTableException, CloneNotSupportedException
  {
  	this("NaturalNumberTable-"+ nNTCount++,data);
  }
  
  public NaturalNumberTable(int rows, int columns) throws Exception
  {
  	this("NaturalNumberTable-"+ nNTCount++,rows,columns);
  }
  
  public NaturalNumberTable(String name, INaturalNumber[][] data) throws NaturalNumberTableException, CloneNotSupportedException
  {
  	if(name==null || "".compareTo(name)==0)
  		throw new NaturalNumberTableException("Null or empty String passed to a constructor.");
  	if(data==null)
  		throw new NaturalNumberTableException("Null INaturalNumber[][] passed to a constructor.");
  	this.name=name;
  	this.data=new INaturalNumber[data.length][data[0].length];
  	for(int i=0;i<data.length;i++)
  		for(int j=0;j<data[0].length;j++)
  			this.data[i][j]=(INaturalNumber)((IBitString)data[i][j]).clone();
  }
  
  public NaturalNumberTable(String name, int rows, int columns) throws Exception
  {
  	this.name=name;
  	this.data=new INaturalNumber[rows][columns];
  	for(int i=0;i<rows;i++)
  		for(int j=0;j<columns;j++)
  			this.data[i][j]=new NaturalNumber(name+"_"+i+"_"+j);
  }

  public INaturalNumber get(int i, int j) throws Exception
  {
  	if(i<0 || j<0 || i>this.getRows()-1 || j>this.getColumns()-1)
  		throw new NaturalNumberTableException("Index was out of range.");
    return this.data[i][j];
  }
  
  public int getColumns() throws Exception
  {
  	if(data[0]==null)
  		throw new NaturalNumberTableException("Null data passed to a constructor.");
  	return data[0].length;
  }
  
  public String getName()
  {
    return name;
  }
  
  public int getRows()
  {
  	return data.length;
  }

  public boolean isSameSizeAs(INaturalNumberTable n) throws Exception
  {
    if(this.getRows()!=n.getRows()) return false;
    if(this.getColumns()!=n.getColumns()) return false;
    return true;
  }
  
  public void set(int i, int j, INaturalNumber value) throws Exception
  {
  	if(value==null)
  		throw new NaturalNumberTableException("Null data passed to a constructor.");
  	this.data[i][j]=value;
  }
  
  public void setName(String name)
  {
    this.name = name;
  }

  public String toString()
  {
    String ret=this.getName()+"\n";
    for(int i=0;i<this.getRows();i++)
    {
    	try
			{
				for(int j=0;j<this.getColumns();j++)
					ret+=this.get(i,j)+" ";
			} catch (Exception e)
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	    ret+="\n";
	  }
    return ret;
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -