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

📄 bigint.java

📁 Pasc+Java 这是一个国外的随机自动机*(RAM)一个学习用的程序
💻 JAVA
字号:
import java.math.BigInteger;

/**
 * Ein BigInt-Objekt stellt eine beliebig gro遝 Ganzzahl dar.
 * @author Thorsten Gutbrod
 * @version 1.0
 */

public class BigInt extends BigInteger{

    /**
     * Erstellt ein neues BigInt-Objekt.
     * @param zahl Ganzzahl als String
     */
    public BigInt(String zahl) {
        super(zahl); // 躡ergibt den String an den BigInteger-Konstruktor
        /* Falls eine Ganzzahl kleiner als 0 erzeugt wurde, dann muss eine
         * NumberFormatException geworfen werden.
         */
        BigInteger test = new BigInteger(zahl);
        if (test.compareTo(new BigInteger("0")) == -1) { // negative Zahl
            /* negative Zahl => werfe NumberFormatException
             */
            throw new NumberFormatException("Negative Ganzzahlen sind nicht"
                                            +" erlaubt!");
        }
    } // end constructor BigInt

    /**
     * Vergleicht die aktuelle BigInt-Zahl mit der 黚ergebenen BigInt-Zahl.
     * @param zahl Die 黚ergebene BigInt-Zahl, die mit der aktuellen zu
     *             vergleichen ist.
     * @return true - falls aktuelle Zahl kleiner als die 黚ergebene
     *                ist, ansonsten false
     */
    public boolean lt(BigInt zahl) {
        boolean rResult; // result f黵 return
        int result = this.compareTo(zahl); // vorl鋟figer Vergleich
        rResult = result==-1 ? true : false; // lt
        return rResult; // gib Ergebnis zur點k
    } //end lt
    
    /**
     * Vergleicht die aktuelle BigInt-Zahl mit der 黚ergebenen BigInt-Zahl.
     * @param zahl Die 黚ergebene BigInt-Zahl, die mit der aktuellen zu
     *             vergleichen ist.
     * @return true - falls aktuelle Zahl gr鲞er oder gleich der 黚ergebenen
     *                ist, ansonsten false
     */
    public boolean ge(BigInt zahl) {
        boolean rResult; // result f黵 return
        int result = this.compareTo(zahl); // vorl鋟figer Vergleich
        rResult = result==-1 ? false : true; // ge
        return rResult; // gib Ergebnis zur點k
    } //end ge
    
    /**
     * Vergleicht die aktuelle BigInt-Zahl mit der 黚ergebenen BigInt-Zahl.
     * @param zahl Die 黚ergebene BigInt-Zahl, die mit der aktuellen zu
     *             vergleichen ist.
     * @return true - falls aktuelle Zahl gr鲞er als die 黚ergebene
     *                ist, ansonsten false
     */
    public boolean gt(BigInt zahl) {
        boolean rResult; // result f黵 return
        int result = this.compareTo(zahl); // vorl鋟figer Vergleich
        rResult = result==1 ? true : false; // gt
        return rResult; // gib Ergebnis zur點k
    } //end gt
    
    /**
     * Vergleicht die aktuelle BigInt-Zahl mit der 黚ergebenen BigInt-Zahl.
     * @param zahl Die 黚ergebene BigInt-Zahl, die mit der aktuellen zu
     *             vergleichen ist.
     * @return true - falls aktuelle Zahl kleiner oder gleich der 黚ergebenen
     *                ist, ansonsten false
     */
    public boolean le(BigInt zahl) {
        boolean rResult; // result f黵 return
        int result = this.compareTo(zahl); // vorl鋟figer Vergleich
        rResult = result==1 ? false : true; // le
        return rResult; // gib Ergebnis zur點k
    } //end le
    
    /**
     * Vergleicht die aktuelle BigInt-Zahl mit der 黚ergebenen BigInt-Zahl.
     * @param zahl Die 黚ergebene BigInt-Zahl, die mit der aktuellen zu
     *             vergleichen ist.
     * @return true - falls aktuelle Zahl gleich der 黚ergebenen
     *                ist, ansonsten false
     */
    public boolean eq(BigInt zahl) {
        boolean rResult; // result f黵 return
        int result = this.compareTo(zahl); // vorl鋟figer Vergleich
        rResult = result==0 ? true : false; // eq
        return rResult; // gib Ergebnis zur點k
    } //end eq
    
    /**
     * Vergleicht die aktuelle BigInt-Zahl mit der 黚ergebenen BigInt-Zahl.
     * @param zahl Die 黚ergebene BigInt-Zahl, die mit der aktuellen zu
     *             vergleichen ist.
     * @return true - falls aktuelle Zahl ungleich der 黚ergebenen
     *                ist, ansonsten false
     */
    public boolean ne(BigInt zahl) {
        boolean rResult; // result f黵 return
        int result = this.compareTo(zahl); // vorl鋟figer Vergleich
        rResult = result==0 ? false : true; // ne
        return rResult; // gib Ergebnis zur點k
    } //end ne

    /**
     * Subtrahiert die aktuelle BigInt-Zahl mit der 黚ergebenen BigInt-Zahl
     * und gibt die Differenz oder bei negativem Ergebnis die BigInt-Zahl 0
     * zur點k. (Modifizierte Differenz)
     * @param zahl Die 黚ergebene BigInt-Zahl, die von der aktuellen zu
     *             subtrahieren ist.
     * @return Ergebnis der modifizierten Differenz.
     */
    public BigInt subtract(BigInt zahl) {
       return new BigInt(super.subtract(zahl).max(new BigInt("0")).toString());
    } // end subtract

    /**
     * Addiert die aktuelle BigInt-Zahl mit der 黚ergebenen BigInt-Zahl
     * und gibt die Summe zur點k.
     * @param zahl Die 黚ergebene BigInt-Zahl, die zu der aktuellen zu
     *             addieren ist.
     * @return Ergebnis der Addition.
     */
    public BigInt add(BigInt zahl) {
	return new BigInt(super.add(zahl).toString());
    } // end add

    /**
     * Multipliziert die aktuelle BigInt-Zahl mit der 黚ergebenen BigInt-Zahl
     * und gibt das Produkt zur點k.
     * @param zahl Die 黚ergebene BigInt-Zahl, die mit der aktuellen zu
     *             multiplizieren ist.
     * @return Ergebnis der Multiplikation.
     */
    public BigInt multiply(BigInt zahl) {
	return new BigInt(super.multiply(zahl).toString());
    } // end muliply

	public BigInt andNot(BigInt zahl){
		return new BigInt(super.andNot(zahl).toString());
	}
	
	public BigInt or(BigInt zahl){
		return new BigInt(super.or(zahl).toString());
	}
	
	/*public BigInt shiftLeft(int n)
	{
		BigInteger big=new BigInteger();
		big=super.shiftLeft(n);
		return new BigInt(big.toString());
	}
	/*
	public BigInt shiftRight(int n)
	{
		BigInteger big=super.shiftRight(n);
		return new BigInt(big.toString());
	}

    /**
     * Dividiert die aktuelle BigInt-Zahl durch die 黚ergebenen BigInt-Zahl
     * und gibt das Ergebnis der Ganzzahldivision zur點k.<br>
     * Falls durch Null dividiert wird, so ist das Ergebnis ebenfalls Null.
     * @param zahl Die 黚ergebene BigInt-Zahl, durch welche die aktuelle zu
     *             dividieren ist.
     * @return Ergebnis der Division.
     */
    public BigInt divide(BigInt zahl) {
        
        BigInt returnZahl = zahl; // die R點kgabe entspricht dem Teiler
	
        /* falls nicht durch 0 geteilt wird,
         */
        if (zahl.ne(new BigInt("0"))) {
            returnZahl =new BigInt(super.divide(zahl).toString());
        }
        return returnZahl;
    } // end divide
    	
} // end class BigInt

⌨️ 快捷键说明

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