教えて!Gooについて回答とか疑問とか

教えて!Gooについて回答とか疑問とか

素数判定を再帰処理で行なうJavaプログラム

2009-11-03 19:12:50 | 日記
http://oshiete1.goo.ne.jp/kotaeru_reply.php3?q=5416746


public class homework {

/**
* @param args
*/
public static void main(String[] args) {
func(1173);
System.out.println("-----");
func(36);

}


public static int[] check(int prime, int div){ //再帰処理
if(prime%div==0 && prime > div && div > 1){
return new int[]{prime/div,div};
}else if(div * div > prime){
return new int[]{prime,0};
}else{
return check(prime, div + 1);
}
}
public static void func(int prime){ //再帰処理
int[] ret =check(prime,2);
if(ret[1]==0){//case prime
System.out.println(ret[0]+" is prime");
return;
}
System.out.println(prime+"="+ret[0]+"*"+ret[1]+"; are thse factors either prime or products of rime?");
//case squared
if(ret[0]==ret[1]){
func(ret[0]);
System.out.println(prime+" is "+ret[0]+" squared, ie the product of prime numbers or prime numbers together.");
return;
}
//case other
func(ret[0]);
func(ret[1]);
System.out.println("So "+prime+" is the product of prime numbers together. (Between "+ret[0]+" and "+ret[1]+" is the product of prime or prime)");
return;
}
}

比を利用した連立方程式

2009-11-02 14:55:18 | 日記
部活動をしている生徒の男女の比が3対2、
部活動をしている生徒が150人のとき、
部活動をしている男子の数をp女子の数をqとすると、
p+q=150
p:q=3:2より3q=2p,3q-2p=0、2p+2q=300なので、5q=300,q=60,p=90
部活動をしていない生徒の比が7対4で、
部活動をしていない男子の数は(男子全体-部活動をしている男子の数)よりx-90
部活動をしていない女子の数は(女子全体-部活動をしている女子の数)よりy-60
x-90:y-60=7:4
生徒数の男女の比が8対5より、x:y=8:5

x-90:y-60=7:4より4x-360=7y-420…(1)
x:y=8:5より5x=8y…(2)
(1)と(2)で完成。
これを解いて、
(1)*5より 20x=35y-300…(3)
(2)*4より 20x=32y…(4)
(3),(4)より32y=35y-300
3y=300,y=100
5x=800よりx=160

生徒数の男女の比が8対5
部活動をしていない男子の数は160-90=70
部活動をしていない女子の数は100-60=40
部活動をしている生徒の男女の比が3対2、していない生徒の比が7対4
(検算終了)

javax.swing.JEditorPaneにテキストを追加する方法

2009-09-29 22:14:43 | 日記
avax.swing.JEditorPaneにテキストを追加する時、このようなやり方もあるというのを発見しました。
findBodyElementの再帰呼び出してBodyエレメントを見つけて、その直下の子エレメントに対して、追加しているというわけです。
javax.swing.text.html.HTMLDocument.getElement("body") で取れるかと思ったのですが甘かった^^;
package test;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import javax.swing.text.html.HTMLDocument;

public class testDoc4JPanel extends JFrame implements ActionListener {
public JEditorPane jEdtLogHtml ;
public JButton jBtnAdd ;
public JButton jBtnReset ;
String strHtml ="<HTML><BODY bgcolor=\"#CCCCFF\"forecolor=\"red\">google<br><br><a href=\"http://www.google.co.jp/\">click here!!</a></BODY></HTML>";

public testDoc4JPanel(){
jEdtLogHtml = new JEditorPane("text/html" , strHtml);
this.add(jEdtLogHtml);

jBtnAdd = new JButton("追加");
jBtnAdd.addActionListener(this);
this.add(jBtnAdd);

jBtnReset = new JButton("初期化");
jBtnReset.addActionListener(this);
this.add(jBtnReset);

getContentPane().setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("JFrameTest");
setSize(600, 300);
setVisible(true);

}

/**
* @param args
*/
public static void main(String[] args) {
new testDoc4JPanel();

}

public void actionPerformed(ActionEvent e) {
if(e.getSource()==jBtnAdd){
HTMLDocument doc = (HTMLDocument)this.jEdtLogHtml.getDocument();
try {
TestDoc testdoc = new TestDoc();

MyElement myelm = testdoc.findBodyElement(doc.getDefaultRootElement());
//testdoc.AlzDoc((myelm.elm));
if(myelm.isFound){
doc.insertBeforeEnd(myelm.elm, new java.util.Date().toString()+"
");
}


} catch (BadLocationException ex) {

ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}else if(e.getSource()==jBtnReset){
this.jEdtLogHtml.setText(strHtml);
}

}



class TestDoc {

public void AlzDoc(Element elm){
System.out.println(
elm.getName()
+ "="
+ elm.getStartOffset()
+ "~"
+ elm.getEndOffset()
+ " and child="
+ elm.getElementCount()
);
for(int i=0;i<elm.getElementCount(); i++){ AlzDoc(elm.getElement(i));
}


}
public MyElement findBodyElement(Element elm){
if(elm.getName().equals("body")){
//return new MyElement(elm);
//Bodyの最初の子を返す
return new MyElement(elm.getElement(0));
}
MyElement retElm ;
for(int i=0;i<elm.getElementCount(); i++){ retElm = findBodyElement(elm.getElement(i));
if(retElm.isFound){
return retElm;
}
}
return new MyElement();

}


}

class MyElement{
boolean isFound = false;
Element elm;
MyElement(Element argelm){
elm = argelm;
isFound = true;
}
MyElement(){
elm = null;
isFound = false;
}
}

}

Excelで分散、標準偏差を計算する場合の関数(それぞれの微妙な差)

2009-09-21 08:35:41 | 日記
有意差検定の種類について - 教えて!goo
Excelで分散を計算する場合VAR系の関数、標準偏差を計算する場合STDEV系の関数を使いますが、微妙に差があります。
STDEV 関数、VAR 関数は、引数を母集団の標本であると見なします。論理値、および文字列は無視されます。
STDEVP 関数、VARP 関数は、引数を母集団全体であると見なします。論理値、および文字列は無視されます。
STDEVA 関数、VARA 関数は、引数を母集団の標本であると見なします。論理値、および文字列を処理します。
STDEVPA関数、VARPA 関数は、引数を母集団全体であると見なします。論理値、および文字列を処理します。