递归n over k多线程(用户输入)

时间:2016-03-25 12:59:55

标签: java multithreading recursion

我尝试重新编程并根据我的需要(用递归计算n ^ k)。但有些东西似乎有问题,因为我首先得到的txt文件中没有任何文字;现在在改变并尝试修复后,我什么都没得到:(

https://www.youtube.com/watch?v=br_TEuE8TbY

package Uebung3;

import java.io.File;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.swing.JOptionPane;

public class Hauptthread implements Runnable {


    //int start;
    //int stop;
    boolean haupt=false;
    String file;

    static int n, k;


    public Hauptthread(int startvalue, int stopvalue, String file, boolean h){

        n= startvalue;
        k=stopvalue;
        this.file=file;
        haupt=h;

    }


    public void run(){

        ArrayList<Double> binominal=new ArrayList<>();

        if (haupt=false) {

        for (int i = n; i <= k; i++) {

            binominal.add(binomial(n,k));

        }
        try{
            PrintWriter print=new PrintWriter(new File(file));
            for (int i = 0; i < binominal.size() ; i++) {
                    print.println("Test");
                    print.println(binominal.get(i));                
            }
        }
        catch(Exception e){
            System.out.println("Error " + e.getMessage());

        }

    }
    }


      double binomial(int n, int k) {
         if (k == 0) {
                return 1; }
            else {
                return (((double)n/k) * binomial(n-1, k-1)); }

    }

}

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

package Uebung3;

import java.util.ArrayList;

import javax.swing.JOptionPane;

public class Uebung3  {

        public static int threadcount=4;

        public static int n, k;
        public static int stop=k;


    public static void main(String[] args) {

        /*
        int n = Integer.parseInt(JOptionPane.showInputDialog("n = "));
        int k = Integer.parseInt(JOptionPane.showInputDialog("k = "));

        if (n < 0 || k < 0 || k > n) {
            JOptionPane.showMessageDialog(null, "Ungueltige Eingabe"); }
        else {
            JOptionPane.showMessageDialog(null, "Rechne" ); 
            //JOptionPane.showMessageDialog(null, "n über k = " +binomial(n, k));

        }        
         */

        System.out.println("Erstelle Threads...");

        int erhoehe=20/threadcount;
        int start=2;

        ArrayList <Thread> threads = new ArrayList<>();

        for (int i = 0; i < threadcount; i++) {
            //if(!((i+1)==threadcount)){
            if(start==10){

                threads.add(new Thread(new Hauptthread(start, erhoehe, i+".txt",false)));
            }
            else {
                threads.add(new Thread(new Hauptthread(start, erhoehe, i+".txt",true)));
            }
        }
        for (int i = 0; i < threads.size(); i++) {
        threads.get(i).start();         
        }
        for (int i = 0; i < threads.size(); i++) {
            try {
            threads.get(i).join();      

            } catch (Exception e) {
                System.out.println("Error" +e.getMessage());            
            }
    }





}
}

0 个答案:

没有答案