2016年11月30日水曜日

[実装メモ] 割とfxmlを読ませるためのコードにミスる人が見られるので私がシステムを作ったときのコードを公開しておく

javafxのfxmlのloaderは割と記述の順番間違えるとエラー吐いてめんどうです.

私がJavaFXでシステム組んだときのコード例を貼っておきます.

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            Pane root = FXMLLoader.load(getClass().getResource("filename.fxml"));
            Scene scene = new Scene(root);
            scene.getStylesheets().add(getClass().getResource("filename.css").toExternalForm());        
            primaryStage.setScene(scene);
            primaryStage.setResizable(false);
            primaryStage.setTitle("Title name");
            primaryStage.show();
            
        
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
   
    public static void main(String[] args) {
        //System.out.println(System.getProperties().get("javafx.runtime.version"));
        launch(args);
    }
   
}


2016年11月8日火曜日

[指導に使えたらいいなノート] 再帰メソッドが難しいなら数IIまで戻ればいいじゃない

再帰メソッド呼び出しは難しいですよね.
 私も悩みました.
 概念もプログラミング規則もわからない状態だとどっちがダメなのかわからないので数学IIの自分がわかっているだろうレベルまで戻りましょう.
こんな漸化式を計算することを考える.
 a1=3
 an = a_n-1 + 2
 (tex記法を利用できるようにしたらきれいにします)
 これで例えばa4を求めるとこうなりますよね.
 a4 = a3 + 2
 a3 = a2 + 2
 a2 = a1 + 2

 ここまできてa1 = 3だから
 a2 = 3 + 2 = 5
 a3 = 5 + 2 = 7
 a4 = 7 + 2 = 9
 と逆戻りしますよね.
再帰メソッド呼び出しでも同じことがわけです.
 
これを実現するのが以下のコードです.
 public class recursion_ex{

    public static void main(String[] args){

        int n = 4;
        System.out.println(calc_recursion(n));

    }


   /*
     a1 = 3;
     an = 前項 + 2;
     を計算
   */

    static int calc_recursion(int n){

      if(n == 1){
            return 3;
        } else {
          return calc_recursion(n-1) + 2;
        }

   }

}


ソースコードのダウンロードはこちら
 recursion_ex.java 


例のごとく質問があれば直接おねがいします.

2016年11月6日日曜日

[指導に使えたらいいなノート] メソッドの使い方がわからないなら簡単な例で…

メソッドの使い方がよくわからないという質問はよく受けます.
なんか教本の例も難しい気がするんですよね.

みんながひと目で見てわかる計算をまずはメソッドを利用して書いてみるといいと思うんですよね.

メソッドわからん人は以下の2数の足し算プログラムが同じ結果になることを確かめるといいと思います.


public class sum1{

    public static void main(String[] args){

   int a = 3;
     int b = 2;

     int sum = 0;

     sum = a+b;

     System.out.println(sum);
  }

}

ソースファイルをダウンロード
sum1.java


public class sum2{

    public static void main(String[] args){

     int a = 3;
     int b = 2;

     int sum = 0;

     sum = add(a,b);

     System.out.println(sum);
    }

   static int add(int a, int b){
         return a+b;
     }
}
ソースファイルをダウンロード
sum2.java


当学部の後輩は質問があれば直接わたしのところまで

2016年11月5日土曜日

[指導に使えたらいいなノート] while文とfor文の性格の違いをわかってほしいサンプルコード

多くをここで語ると関係各所の方に怒られそうなのでソースコードを載せるだけ表現してみる.
このコードを見てwhile文とfor文で等価なものをどうやって書くかと,どういうときにwhileでこういうときにforがいいなとかわかってもらえたら嬉しいでござる…


public class sample2{
    public static void main (String[] args){
       
        int i = 0;
        int n = 10;
        int sum1 = 0;
        int sum2 = 0;
       
        while(i<n){
            sum1 += i;
            i++
        }
       
        for(int j = 0;j<n;j++){
            sum2 += j;
        }
       
        System.out.println(sum1);
        System.out.println(sum2);
       
       
    }
}

着目してほしいのは各文の(  )の中に何を書いているかについて.
for(;;)みたいにかけるけどそれは別のお話ということで…


うちの学部の後輩が見ていたら質問は直接私のところまで