1 名前:デフォルトの名無しさん [2007/09/26(水) 20:51:18 ] ハードウェアの高スペック化、描画アルゴリズムの変更、JavaVMの高速化に伴い、パフォーマンスの問題は改善されています。 しかしながら、"Java"というだけで未だに敬遠されるのが現状。 そんなSwingと引き続き付き合っていくみんなのスレッドです。 Java低速GUI Swing 5 (前スレ) pc11.2ch.net/test/read.cgi/tech/1161139809/ Java低速GUI Swing 4 pc8.2ch.net/test/read.cgi/tech/1140533866/ Java低速GUI Swing 3 pc8.2ch.net/test/read.cgi/tech/1121700954/ Java低速GUI Swing 2 pc8.2ch.net/test/read.cgi/tech/1095398949/ Java低速GUI Swing pc5.2ch.net/test/read.cgi/tech/1062271447/l50
757 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:10:11 ] すいません 途中でした。 続き if (x > 行き先X) {
758 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:13:28 ] すいません 途中でした。 続き if (x > 行き先X) { x -= 5; } else { x += 5; } if (y > 行き先Y) { y -= 5; } else { y += 5; } こうやってるんですけど、こうするとxかyのどちらかが行き先に到達した場合に、 ぷるぷる震えた感じになっちゃうんですけど、なにかうまい方法ありますかね?
759 名前:デフォルトの名無しさん [2007/12/27(木) 00:13:37 ] それはSwingの問題なのか??
760 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:15:21 ] 単に行き先Xや行き先Yが5の倍数じゃないんじゃね?
761 名前:758 mailto:sage [2007/12/27(木) 00:18:36 ] >>760 そうですちょうど倍数じゃないときで、移動距離を1にしたくない場合、 どういうロジックが考えられますか?
762 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:34:37 ] >>761 それぐらい、自分で考えろよ・・・・ つかスレ違い。
763 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:40:10 ] Math.abs() 絶対値 差が5に満たない場合 差の分だけ移動 既に目的地に到達してたら チェックはしない。 移動距離の5は定数にしようかな 思った事を書いてみた。 俺は寝る、がんばれ。
764 名前:758 mailto:sage [2007/12/27(木) 00:41:06 ] そうですか 表示上の問題だと思ったんでここで聞いたんですが・・・ xflagとyflagを作って、&で到達チェックするとか考えたんですけど、 スマートじゃないんですよね たとえばどんなのが考えられますかね?
765 名前:758 mailto:sage [2007/12/27(木) 00:43:12 ] >>763 ありがとうございます とても参考になりました
766 名前:デフォルトの名無しさん [2007/12/27(木) 00:45:01 ] >どういうロジックが考えられますか? って自分で聞いてるぐらいだからSwingの問題じゃなくてアルゴリズムの問題だろ。
767 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:51:43 ] そうですね javaのスレッドで聞いたほうが良かったですね 答えてくれた方ありがとうございました。
768 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:03:08 ] java関係ないし 問題の切り分けに注意しないと間違ったスレでは歓迎されないぞ
769 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:14:11 ] そうですか 初心者スレッドで聞けばよかったですか いえばただの簡単なアルゴリズムの問題なのですが、 ここなら同じようなことをやっている人がいるかなと思ったんで、 ここで聞いたほうが早いかなと思ってしまいました。
770 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:17:26 ] 初心者は初心者らしく初心者スレで聞こうな。 まあ、その前にこの程度のロジックは自分で考えられないと、 なにを作るにしても困ると思うぞ。
771 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:33:38 ] というか普通に高校の物理の問題じゃないかこれ? そこまでのアルゴリズムじゃないけど。
772 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:36:47 ] 物理?! どう見ても小学生の算数レベルだろ。
773 名前:758 mailto:sage [2007/12/27(木) 01:39:19 ] 強引にやろうと思えばできると思うんですが、 スマートにできないんですよね(馬鹿なんで)。 完璧を目指すのはキリがないと思うんですが、 ある程度きれいなコードが知りたいんですよ。 ttp://pc11.2ch.net/test/read.cgi/tech/1197710566/ ここに移動したんで良かったらいいサンプルコードお教えください。
774 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:43:05 ] >>769 >ここで聞いたほうが早いかなと思ってしまいました。 こんなのを自分で考えられないとしたら先は長い気がするが… まぁ地道にがんばれ!
775 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 02:06:16 ] ベーマガとか初心者向き雑誌がないと大変なのかなーとかおもっちまった こういうの当時の小学生は普通に作ってたもんね
776 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 02:18:59 ] HSP使ってる連中も普通に作ってるぞ。 というかゲームにSwing使ってるの?
777 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 02:20:55 ] Java2Dを使うことはあるかもしれないが、Swingはあんまつかわないだろうね ただ、ここAWTと合流したからJava2D等も含むといえば含む 本気でやるならJOGLだろうけど
778 名前:デフォルトの名無しさん [2007/12/27(木) 02:26:13 ] 本当だ!! いつの間にかスレタイにAWTが入ってた!!
779 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 02:32:45 ] JOGLの正式版が出たときプレイアブルな2DデモとGLCanvasに描画するJMFのレンダラを組んだけど いまじゃJOGLはjava2Dとパイプラインが統合されてんだよね。 OpenGLの関数使いたいわけじゃないなら-DオプションでOpenGL使うようにした方が楽かね? それならわざわざ2D描画に3Dtoolkit使う必要ないし。 バグさえ消えれば。
780 名前:デフォルトの名無しさん [2007/12/27(木) 04:23:20 ] javax.swing.timerなんですけど ↓の様にやること多いじゃないですか このタイマーをストップさせることって可能ですか? public void startTimer() { int i = 0; Timer timer = new Timer(20, new ActionListener() { public void actionPerformed(ActionEvent e) { if (i > 100) { return; } i++; }); timer.start(); } いままで↑のような感じでiが100超えたらリターンするようにしてたんですが、 ずっとタイマーは動きっぱなしなんですよね。 timerはiが100を超えたらストップさせたいんですよ。 timer内から自分自身をstopさせることができればいいんですが...
781 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 07:13:18 ] まぁ、とりあえず読みなさい。 java.sun.com/javase/ja/6/docs/ja/api/javax/swing/Timer.html
782 名前:780 mailto:sage [2007/12/27(木) 07:55:23 ] そこも含めていろいろググったんですが... 実際のコーディングを見てください まずメインクラスでクラスAのインスタンスaを10個作る(略 pubilc void run { //メインループ for(int i=0;i<10;i++){ //a[0]からa[9]のxを増やしていき、xが10になったらstartTimer()をplay a[i].x++; if(a[i].x >= 10) { a.startTimer(); } @ } } pubilc class A { int x = 0; int size = 10; public void startTimer() { Timer timer = new Timer(20, new ActionListener() { public void actionPerformed(ActionEvent e) { if (size> 20) { return; } size++; }); timer.start(); } } 実際はa[0]が増分し終わったらa[1]にいったり、同時に動いたりするんですが... @の部分で判定してtimer.stopさせようとしてもすぐストップしてしまうと困るし、 メインループからはtimerがいつ終わるのかわからないのでストップできないんですよね なにか大きな間違いがあるんでしょうか?
783 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 08:37:43 ] Timer#stop()を呼べば止まると分かっているのなら、 後は変数のスコープの問題。 ローカル変数timerをクラスAのインスタンス変数にして、 こんなメソッドを作って public void stopTimer(){ timer.stop(); } これをactionPerformed()内の適切な位置で呼べばいい。 ところでこのサンプルコード、Timerでやってる処理がi++だけなんだが、 これは単純化したサンプルコードなだけだよね? ホントのコードでは、ちゃんとGUIスレッドですべき処理をしてるんだよね?
784 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 08:53:05 ] ああうまくいきました GUIスレッドですべき処理というのがいまいちわかんないんですが、 ある条件でaのエフェクトを起こすみたいな感じなんですよ とにかくこれで寝れます どうもありがとうございました
785 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 10:45:15 ] ボタンのイベント中にタイマーの時間が来たり、その逆も有ったりするって意味じゃね。
786 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 12:26:40 ] >>783 swing.TimerはEDTでactionPerformed呼ぶからそのへんは大丈夫と思
787 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 13:29:19 ] >>779 Java2Dだとαブレンディング/テストとか足りないものが多いから 2DであってもOpenGL使わざるを得ないのが現実 >>785 が正解 あと注意すべきところはSwingTimerは定期処理にはいいけど、 長時間の流れがある処理には向かないというのもおぼえておくとよろし あくまでも一定時間ごとにアクションイベントを発生させるだけ 詳しく見てないけどSwingFrameworkでjavax.swing.Timerも扱えるんかな?
788 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 22:23:18 ] Javaで動画を再生しようと思っているのですが(Macも含める) ・JMFだとMacで再生出来ない。 ・QuickTime for JavaだとLinuxで再生出来ない。 という認識はあっていますでしょうか?
789 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 22:41:37 ] JMFのクロスプラットフォーム版を含めるなら間違ってる。 というかこれくらい人に聞かずとも分かるだろ。
790 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 00:08:21 ] >>789 ttp://www.animoids.com/jmf_for_mac.html 「JMF_2_1_1_mac.zip」の部分から、 もしかしてMac用がどこかで配布されているのかと勘違いしてしまいました。
791 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 03:27:55 ] 検索するとそこヒットするんだよね。 JMFはjava動かすスペックと動画デコードするスペックを ダブルで要求するからネイティブ版でもいろいろすると重いぞ。 単純なラッパーだからwin版はバグだらけだし。
792 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 08:46:22 ] >>790 こんなの見つけたぞ ttp://www.sra.co.jp/people/nisinaka/Jun4Java/index_ja.html
793 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 15:55:29 ] 2004年から更新してないとか心配なんだけど、 なんでどこも投資して開発を続けないんだろう
794 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 16:06:51 ] こんなところでじゅんを見る事になるとは・・・。
795 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 16:40:20 ] JFileChooserにおいて、ダイアログ表示時のデフォルトの名前を指定するにはどうすればよいでしょうか?
796 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 16:55:09 ] setSelectedFile() で指定してから表示
797 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 16:57:49 ] JFileChooser#setSelectedFile(File)
798 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:14:41 ] ありがとうございました!
799 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 00:16:16 ] NetBeans入れたら超もっさり動作でがっかりした。 結局今はEclipseにもどりますた。 SwingアプリがSWTアプリみたいに比較的ストレスなく動いてくれる日はマダ来ないのかね。
800 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 00:25:30 ] もっさりとかストレスなく動くとかってのは主観的なものだから、 >>799 の気分次第で明日にでも来るし、永遠に来ない事もありうる
801 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 00:57:01 ] >>799 マシンのスペックはいかほどで?
802 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 00:58:07 ] JavaはマイナーCPUに冷たいだろうし マイナーGPUにも冷たいのかもしれんね
803 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 01:02:44 ] CやC++なら温かいともいえないんじゃね?
804 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 01:16:32 ] >>802 Java使ってるSWTもマイナーCPUやマイナーGPUに冷たいって事に?
805 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 01:17:10 ] >>802 SPARCにも冷たいって事に?
806 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 01:20:05 ] >>804 はスルーするが、>>805 は許せん。
807 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 01:42:32 ] 今時はお世辞にもメジャーとは言い難い。
808 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 14:16:14 ] いまさらSPARCもねえだろ
809 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 15:29:10 ] 金にいとめをつけずWinで最速のマシンもってくれば、Javaでもかなり高速動作するんじゃないの。
810 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 15:33:56 ] 既存のコンポーネントにアクションを付加したい場合どのような手段を取るのが比較的単純に済むでしょうか? 例えば、JTreeでCtrl+Fで検索のアクションをさせたい場合などです。
811 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 17:44:54 ] >>810 適当なコンポーネントの ActionMap と InputMap に登録すればいいだろ。
812 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 18:07:49 ] JFileChooserののろさにガックリ
813 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 18:15:44 ] >>368 あたりで話題になってる不具合のせいかも?
814 名前:>>810 mailto:sage [2007/12/31(月) 18:36:09 ] InputMapを知りませんでした。 こんな簡単に実現できるなんてSwingは本当にすごいですね。 ありがとうございました。
815 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 02:16:39 ] >>799 いつものネガティブキャンペーン乙 6.0だとEclipseのほうが軽いとかってありえんだろ SWTはスレ違いだからそっちでやってくれ
816 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 02:28:13 ] 今更釣られるアホは寝てろ
817 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 08:17:29 ] たしかに起動に関してはnetbeansめっちゃ遅いよな
818 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 02:11:59 ] 何もプラグイン入れなければ、Eclipseは軽いね。
819 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 02:17:51 ] Java EE フルセット入れた Eclipse のもっさりと不安定さはすさまじいものがある。 sysdeo の Tomcat プラグインと JSP, XML の構造化エディタ程度ならめちゃめちゃ軽い。 必要なものを選択できる人間だけが楽できる。
820 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 03:15:40 ] >>819 インストールしてもプラグイン無効にすればいいんじゃね?
821 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 22:26:40 ] swingのコピペを調べてたんだが。 CTRL+X -> CTRL+V で「切り取り -> 貼り付け」した時に、 貼り付け後に、余計なオブジェクトを削除するための後処理はexportDoneでいいんだろうか? なぜか、CTRL+Xを押した瞬間に、exportDoneが実行されちゃうんだ。 exportDoneの説明には、 >データのエクスポート後に呼び出されます。このメソッドは、アクションが MOVE の場合に転送されたデータを削除します。 >MOVE はこの実装にサポートされるアクションでないため、このメソッドの実装では何も行われません。getSourceActions には MOVE が含まれません。 どっちやねんw
822 名前:821 mailto:sage [2008/01/02(水) 22:28:33 ] 今のところ、対処方法が分らないので、exportDoneの中では何もせず、 importDoneの中で、貼り付け操作完了後に、 自分で削除操作を実行しようかなと思ってる。
823 名前:821 mailto:sage [2008/01/03(木) 00:34:28 ] なにをバカなことを! 切り取りの標準的な操作は、切り取りと同時に削除だろうが! エクスプローラの動作が特殊なんだ! 新年早々はずかしぃぃぃぃぃぃぃぃぃぃぃぃ!!!!!!!!!!
824 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 03:16:52 ] エクスプローラの動作は、CUTというよりPREPARE-MOVEだからな。
825 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 20:53:44 ] >>817 終了はめっちゃ速いのだが。
826 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 23:23:28 ] jdk1.6.0u3 import java.awt.Frame; これってバグなの?
827 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 23:33:55 ] ___ ━┓ / ―\ ┏┛ /ノ (●)\ ・ . | (●) ⌒)\ . | (__ノ ̄ | \ / \ _ノ /´ `\ | | | | ___ ━┓ / ― \ ┏┛ / (●) \ヽ ・ / (⌒ (●) / /  ̄ヽ__) / . /´ ___/ | \ | |
828 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 23:49:08 ] >>827 分かる人にはこれだけで分かる
829 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 23:53:32 ] >>827 >>828 バグってたのは俺のほうだったw *.class 削除したらコンパイル通ったよww
830 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 00:55:29 ] どういう環境だよ・・・
831 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 01:26:16 ] >>830 pc11.2ch.net/test/read.cgi/tech/1197710566/646 だろう。
832 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 11:20:26 ] テストするならTestFrameとかにすべし
833 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 12:55:58 ] >>831 よくみつけてきたな
834 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 03:57:38 ] 相変わらず質問スレは気持ち悪いな
835 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 17:58:19 ] import java.util.*; import javax.swing.*; public class NewJFrame2 extends javax.swing.JFrame { List<String> dummyList = new ArrayList<String>(); JList jList; public NewJFrame2() { setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE); JScrollPane jScrollPane = new JScrollPane(); jList = new JList(); jScrollPane.setViewportView(jList); getContentPane().add(jScrollPane, java.awt.BorderLayout.CENTER); for ( int i=0; i<300; i++ ) { StringBuilder sb = new StringBuilder(); int max = (int)(Math.random() * 100 + 1); //int max = 20; for ( int j=0; j<max; j++ ) sb.append("A"); dummyList.add(sb.toString() + " " + i); } jList.setModel(new AbstractListModel() { public int getSize() { return dummyList.size(); } public Object getElementAt(int index) { return dummyList.get(index); } }); pack(); } public static void main(String args[]) { new NewJFrame2().setVisible(true); } }
836 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 18:01:42 ] JListのカーソルキーによるスクロールことで謎があるので投げてみる。 >>835 のプログラムなんだけど、単純にJListの中に300個のダミーデータを入れている。 カーソルキーで下にスクロールしていき、数十行進んだら、こんどは上に10行くらい スクロール。 そしたらまたカーソルキーで下に移動。 すると、選択されてる項目が一瞬で画面の下までジャンプしてしまう。 このプログラムで、maxを20とか一定の値にした場合はジャンプしない。 JListの各セルの文字列長をランダムに変えたものを入れるとこの現象が起きる。 こういう仕様なのかもしれないけど、一瞬で選択位置が飛ぶと、 目線がそれてしまうので操作感がよくない。 maxを固定したときのように動作してほしい。 なんとかする方法ないかなぁ?
837 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 19:57:24 ] >>836 解決法でないのだが、「ジャンプ」の条件について。 固定長かどうかではなく、Viewport の外に描画域があるかないか、ではないのか、と。 固定長で横スクロールが出るようにしたときは「ジャンプ」するし、 固定長でなくても、横スクロールが出ないときは「ジャンプ」しない。 JScrollPane で横スクロールを非表示にしても、見えない部分があるときは「ジャンプ」する。
838 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 16:05:46 ] フレームの横サイズを水平スクロールバーが出なくなるまで広げてやればジャンプはしないな。 しかしちょっと設定をいじくったぐらいでは解決しそうない。 オーバーライドして一部の機能を殺すとか。
839 名前:デフォルトの名無しさん [2008/01/10(木) 18:27:36 ] ↓このバグだと思うよ。7で直ってるらしい。 bugs.sun.com/view_bug.do?bug_id=6568906 bugs.sun.com/view_bug.do?bug_id=6510999
840 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 18:57:44 ] バージョンアップを待つのが一番楽そうだね
841 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 19:27:17 ] よく見つけてくるな。すげーよ。
842 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 21:33:46 ] 有名なバグだぞ。 JListに512個要素突っ込むとバグるとか放置されてるし。
843 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 22:03:23 ] >>842 2000個いれてみたけど、なにかバグあんの?
844 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 22:52:30 ] 512個入れて、一番したのアイテム選択してCTRL+B これで、すべてのアイテムが2個ずつになって1024個になるというステキなバグ
845 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:06:27 ] 1から10000までの数字を全部掛けたときに 末尾に並ぶ0の個数を求めるのをJavaでおながいします
846 名前:デフォルトの名無しさん [2008/01/10(木) 23:10:36 ] それはSwingに関係あるのか?
847 名前:デフォルトの名無しさん [2008/01/10(木) 23:16:39 ] >>844 バグが出なかったんだけど 他になんか条件ないの?
848 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:17:55 ] >>845 class Test{ static void main () { cnt5 = 0; for (int i = 1;i <= 10000; i++) if(i % 5 == 0) cnt5++; System.out.println("count" + cnt5); } }
849 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:22:25 ] ああ、5から5ずつ足してくから10000/5=2000か?
850 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:48:27 ] 10を素因数分解して2*5。んで、2は大量に有るから、5だけ数えれば良い、と。
851 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:51:27 ] どの道>>848 は間違ってるわな
852 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:07:08 ] >>850 i%25 とか i%125 も数えなきゃだめじゃね?
853 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:07:36 ] どのみちグズグズっぽいんだが。
854 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:15:22 ] スレチだからまぁ。妖精現実を引っ張ってお茶を濁すべ つ ttp://deztec.jp/x/05/faireal/faireal-26-index.html
855 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:19:54 ] いかにロジカルに解くかが課題じゃなけりゃ BigDecimal で階乗求めて数えた方が早い。 実用に問題ないレベルならシンプル記述に徹するのも美学。
856 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:48:09 ] 80-20の法則な。今丁度勉強中。
857 名前:848 mailto:sage [2008/01/11(金) 01:29:37 ] 直した。 class Test{ static void main () { int cnt5 = 0, n; for (int i = 5;i <= 10000; i += 5) { n = i; while (n % 5 == 0) { cnt5++; n /= 5; } } System.out.println("count" + cnt5); } }