08/08/26 13:47:24
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
class testXml
{
public static void main(String args[]) throws Exception
{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new FileInputStream("testXml.xml"));
Element root = doc.getDocumentElement();
walk(root);
}
664:泣きそう
08/08/26 13:49:43
public static void walk(Node n)
{
for(Node ch = n.getFirstChild();
ch != null;
ch = ch.getNextSibling()){
if(ch.getNodeType() == Node.ELEMENT_NODE){
System.out.println("ELEMENT_NODE:"+ch.getNodeName());
walk(ch);
}
else if(ch.getNodeType() == Node.TEXT_NODE && ch.getNodeValue().trim().length() !=
0){
System.out.println(" TEXT_NODE:"+ch.getNodeValue());
} else {
System.out.println( ・・・・key1を出力したいです);
System.out.println( ・・・・valを出力したいです);
}
}
}
}
665:泣きそう
08/08/26 13:50:39
長く書いてしまってごめんなさい。
けど、どなたか教えて下さい。
お願いします
666:デフォルトの名無しさん
08/08/26 14:18:49
>>662
Document doc = db.parse(in);
NodeList l = doc.getElementsByTagName("element");
if (null == l) {
System.out.println("タグ element はありません。");
} else {
System.out.printf("タグ element は %d 個あります。\n", l.getLength());
for (int i = 0; i < l.getLength(); ++i) {
NamedNodeMap n = l.item(i).getAttributes();
System.out.printf("\t[key=%s],[val=%s]\n"
, n.getNamedItem("key").getNodeValue()
, n.getNamedItem("val").getNodeValue());
}
}
667:デフォルトの名無しさん
08/08/26 14:43:34
それ以前にxmlの設計が腐ってる。
xmlスレ行って出直して来い。
668:デフォルトの名無しさん
08/08/26 15:30:04
>662
コンパイルエラー
URLリンク(javafaq.jp)
669:デフォルトの名無しさん
08/08/27 00:15:27
>>662
普通はこんなかんじ。
indexはいらんかも。
<config>
<ptn_data index="1">
略
</ptn_data>
<ptn_data index="2">
略
</ptn_data>
</config>
670:デフォルトの名無しさん
08/08/27 07:37:12
すいませんが教えてください。
自分で作った実行ファイルがあります(文字コードMS932)→Test.class
これをbatファイル(文字コードEUC-JP)で実行します。
batファイルの中身は
java Test 日本語パラメータ
で、batファイル自体は文字コードEUC-JPです。
この場合引数で受け取った"日本語パラメータ"という文字列を
プログラム内ではMS932として、文字化けせず"日本語パラメータ"として処理を行いたいのですが
どうすればいいでしょうか?
まず、batファイルをダンプして"日本語パラメータ"という文字列を見た場合と
args[0]をarg[0].getBytes()してダンプ出力した結果が違うのです。
ためしにarg[0].getBytes("EUC-JP")してもこれもまた上とはまた違った結果になります。
もう、引数で渡されてきた時点でデータが壊れているのでしょうか?
671:デフォルトの名無しさん
08/08/27 07:59:53
>>670
コマンドラインはプラットフォームのデフォルトエンコーディングで扱
われると思う。batファイルとか書いてあるってことはWindowsかね。で
あれば、コマンドラインはms932で書かないと化ける。
ところで「実行ファイルの文字コードがms932」ってどういう意味?
672:デフォルトの名無しさん
08/08/27 08:02:34
>>670
echo 日本語パラメータ
だけの内容のbatファイルをEUC-JPで作成して試してみ?
たぶん引数の前、コマンドラインシェルが解釈した段階で化けてると思うぞ。
673:デフォルトの名無しさん
08/08/27 11:33:28
一旦バイトコードに変換してから処理したいんですが
文字化けを起こして出来ません。
PrintWriter out = response.getWriter();
//String val = request.getParameter("kanji");
//byte[] byteData = val.getBytes("Shift_JIS");
//val = new String(byteData, "Shift_JIS");
out.print(val);
コメントアウトを外すと文字化けを起こします。
表示先は文字コードはShift_JISであっている筈なんですが・・・
単純に両方Shift_JISをピンポイントで指定してるのに
なぜ化けるのでしょうか?バイトコードへ変換して戻す処理の中で何かデータの欠損でも起きているのでしょうか?
674:デフォルトの名無しさん
08/08/27 12:30:06
SJIS外の文字は入ってないの?
675:デフォルトの名無しさん
08/08/27 12:43:56
>673
1. response の PrintWriterオブジェクトの文字コードは何なのかしら?
2. request は正しい文字コードで入力を読み取ってるかしら?
3. 674 のように Shift_JIS外の文字は入ってないかしら?
4. response で出力した先の文字コードは 1 と同じかしら?
676:デフォルトの名無しさん
08/08/27 15:35:15
行き詰まっているので質問させて下さい。
データベースに日付を管理するresettime・・・というテーブルがあります。
そのテーブルにはtimeというdate型のカラムがあり2008-08-27という値が格納されています。
んでソースです。
public void checkDate() {
Date now = new Date();//今日の日付
String sqlIndex = "select * from resettime";
try {
db.connect();//データベースに接続する
ResultSet rs = db.executeQuery(sqlIndex);//Statementのと同じ機能
rs.next();
if(now.after(rs.getDate("time")//今日の日付のはず)) { //※問題の箇所
String[] sql = new String[2];
sql[0] = "delete from popularmovieinfunnymoviechannel";
sql[1] = "update resettimeinfunnymoviechannel set time = '"+now+"'";
db.addBatch(sql);
db.executeBatch();//Statementのと同じ機能
}
}
catch(SQLException e) {
}
finally {
db.disConnect();//データベースを切断する
}
}
問題の箇所がtrueとなってしまい上手くいきません。バグっぽい箇所が在ればご教授下さい
jreは6_7です。
677:デフォルトの名無しさん
08/08/27 15:38:43
nowは今日の日付に加えて現在の時刻も入ってるはず
そのDBのdate型が時刻を格納してないなら00:00:00になるはず
今日の現在時刻と今日の00:00:00を比較したらどうなるかというと・・・
678:デフォルトの名無しさん
08/08/27 15:43:11
RMiの呼ばれる実装クラスにて、要求先のIPアドレスを取得する方法はあるでしょうか?
引数で情報を渡すはなしでお願いします。
679:デフォルトの名無しさん
08/08/27 15:51:05
>>673
request.setCharacterEncodingでSHIFT_JISを有効にする。
あと、Tomcat5.0以降のバージョンでGetの処理すると、
デフォルトの動作でsetCharacterEncodingが無効になるから注意。
server.xmlの変更で対処して。そのあたりはググれば出てくる。
680:デフォルトの名無しさん
08/08/27 15:55:34
>>677 nowをjava.sql.Date()のインスタンスにしてもtrueになるんですけど・・・
jre変えてみまッス。
681:デフォルトの名無しさん
08/08/27 16:05:40
>>680
java.sql.Dateも一緒
Javadoc見てみ、時間をミリ秒で表すって書いてある
URLリンク(java.sun.com)
682:デフォルトの名無しさん
08/08/27 16:20:08
結局データーベースから取ったDateとDateインスタンスは比較しても無駄って事ですか?
683:デフォルトの名無しさん
08/08/27 16:24:51
>>682
java より先に小学生レベルの時刻の概念から学んだ方がいい
684:デフォルトの名無しさん
08/08/27 16:28:50
>683 あいそうします。ありがとうございました。
685:デフォルトの名無しさん
08/08/27 16:55:15
時間・時刻を比較したいのか
686:デフォルトの名無しさん
08/08/27 17:11:31
afterとbeforeの動作を誤解してるとかじゃないよね?
nowが現在の時刻なんだから、それよりもafterな時刻なんて
存在しない……だから、”問題の箇所”は常にtrueになって当たり前。
687:686
08/08/27 17:13:43
「それよりもafter」って変だったorz
現在の時刻よりも、未来の時刻は存在しないから
”問題の箇所”は常にtrueって言いたかった……
688:デフォルトの名無しさん
08/08/27 21:01:43
>>686 もしjava.sql.Date型同士のインスタンスを比較するとして両方のインスタンスが
同年同一日ならafterでもfalseが帰る。
689:680
08/08/27 21:20:11
>681 nowの方の日にちを調整することで解決させました。
このまま行ってたら大きな誤解を持ったまま行くところでした。thx。
690:デフォルトの名無しさん
08/08/27 21:30:00
Component component = new JScrollPane(new JPanel());
JTabbedPane jtp = new JTabbedPane();
jtp.addTab(component);
のように書いた時に、後々componentを取得する方法はあるで
しょうか。
ご教授お願いします。
691:690
08/08/27 21:40:35
すみません。690ですが
取得したいのはcomponentではなくて、
スクロールペインの中のJPanelでした。
宜しくお願いします。
692:デフォルトの名無しさん
08/08/27 22:16:21
Strtusについて質問です。
public void setGoods(ArrayList<String> goods){
this.goods = goods;}
public void setNumber(ArrayList<String> number){
this.number = number;}
このようにしてBeanに格納したArrayListを、
<logic:iterate id="name" name="Bean">
<bean:write name="name" property="number" />:
<bean:write name="name" property="goods" /><br>
</logic:iterate>
上記のJSPで出力しようとしてもエラーが出ます。
<logic:iterate id="name" name="Bean" property="number">
<bean:write name="name" />
</logic:iterate>
<logic:iterate id="name" name="Bean" property="goods">
<bean:write name="name" />
</logic:iterate>
こういった書式だと値の表示は可能ですが、当然出力位置が変ってしまいます。
number1:goods1
number2:goods2
number3:goods3
最終的にこういう表示をさせるにはどういった書き方をすればいいでしょうか。
693:デフォルトの名無しさん
08/08/27 23:17:58
>>691
((JScrollPane)component).getViewport().getView()
694:デフォルトの名無しさん
08/08/28 01:24:16
>>693
ありがとうございます。
お陰で無事解決しました。
695:688
08/08/28 09:17:37
ごめ、嘘ブッコイタ。
696:デフォルトの名無しさん
08/08/28 10:11:00
>>678
java.rmi.server.RemoteServer.getClientHost() でガマンしろ。
697:デフォルトの名無しさん
08/08/28 11:33:18
まったくの初心者です。よろしくお願いします。
Javaの勉強をしようと思い
「JDK 6 Update 7」をダウンロードしてインストールしてみました。
環境変数を設定した後に、バージョンが正しいか確認してみたのですが、
C:\>java -version
java version "1.4.2_03"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-b02)
Java HotSpot(TM) Client VM (build 1.4.2_03-b02, mixed mode)
と表示さてれました。
ただし、
C:\WINDOWS\system32>java -version
java version "1.6.0_07"
Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
Java HotSpot(TM) Client VM (build 10.0-b23, mixed mode, sharing)
だと、きちんと「JDK 6 Update 7」がインストールされているぽいのですが・・・
これってちゃんとインストールされた状態になったのでしょうか?
698:デフォルトの名無しさん
08/08/28 11:36:50
すでにインストールされてたっぽい JRE 1.4.2_03 は特に使わないなら削除してしまえ
あと javac -version も
699:デフォルトの名無しさん
08/08/28 11:45:50
>>698
レスありがとうございます。
C:\>javac -version
javac version "1.6.0_07"
C:\WINDOWS\system32>javac -version
javac version "1.6.0_07"
でした。
1.4.2_3の削除についてですが、
プログラムの追加と削除に無く、
レジストリ内も検索してみたのですがそれらしいのが無いため
どこから削除すればよいでしょうか?
700:692
08/08/28 11:54:23
自己解決しました。
ありがとうございました。
701:デフォルトの名無しさん
08/08/28 11:55:18
>>699
環境変数の PATH を確認する。
恐らく "C:\jdk1.4.2_03\bin" みたいなのが含まれているはず。
702:デフォルトの名無しさん
08/08/28 15:08:43
デザインパターンの本を買った人へ。
貴方のほらふきの癖を治せば、少しは友達が増えると思います。
703:デフォルトの名無しさん
08/08/28 16:32:37
javaでゲームのようなものを作っているのですが、(GUIです)質問させていただきます。
ゲームを起動すると
ログイン画面→どのゲームを選ぶかの選択画面→ゲームの画面
と画面を入れ替えていきたいのですが、どうやって処理すればいいでしょうか?
やはりカードレイアウトを使うしかないのでしょうか?画面の切り替えには・・・
704:デフォルトの名無しさん
08/08/28 16:50:41
質問させてください。
while文を回して配列に格納した多くのデータを、
終了後にファイルに出力するにはどうするのが一番効率的でしょうか?
ファイルの入出力がよくわからなくて…よろしくお願いします。
705:デフォルトの名無しさん
08/08/28 17:06:04
Ubuntuなら
update-alternativeっていうコマンドでやる。
PATHには入ってないんじゃないかな?
javaのパスを直接指定する人も珍しいだろうし。
とりあえず気休めだが、
JAVA_HOMEをいじっておけ。
706:デフォルトの名無しさん
08/08/28 17:58:51
>>704
効率なんか気にせず作ってみる
だいたい気にするほど遅くないことが多い
実際に気になるほど遅かったらそのときに訊くといい
707:デフォルトの名無しさん
08/08/28 18:01:26
>>703
古いコンポーネントをremoveして新しいコンポーネントをaddすることもできるよ
708:704
08/08/28 18:50:07
>>706
ありがとうございます。とりあえず作ってみます。
709:デフォルトの名無しさん
08/08/28 19:30:56
>>707
ありがとうございます。removeで取り除くことを忘れてました。。
カードレイアウトとどちらが良いんでしょう・・・
710:デフォルトの名無しさん
08/08/28 19:32:27
>>707
ありがとうございます。removeで取り除くことを忘れてました。。
カードレイアウトとどちらが良いんでしょう・・・カードは重くなりそうな印象で
711:デフォルトの名無しさん
08/08/28 19:35:01
二重・・・すいませんov2
712:デフォルトの名無しさん
08/08/28 23:13:00
>>710
印象で選択するのは危険。
実測してみればいい。
713:デフォルトの名無しさん
08/08/28 23:39:43
他のスレで話題に上がってて気になったんで質問。
Javaでチャット機能作る場合は一人に1スレッド設計しか無理なの?
サーバからのメッセージも随時受け取らないとダメだし
714:デフォルトの名無しさん
08/08/29 00:06:32
一人の何に1スレッドを当てるの?
715:デフォルトの名無しさん
08/08/29 00:55:57
スレッドは常にwhileで受信の準備をしてるんじゃない?
716:デフォルトの名無しさん
08/08/29 01:31:12
非同期
717:デフォルトの名無しさん
08/08/29 01:43:05
genericsについて質問です。
Parentクラスを継承するChildクラスを定義して下記コードを記述しました。
List<? extends Parent> list = new ArrayList<Child>();
list.add(new Parent());
上記コードでコンパイルエラーが出ます。
型を見るとadd()の引数がnullになってました。
きっとadd()しちゃいけないから引数の型がnullなんでしょうけど、
理由がよくわかりません。教えてくだしあ。
718:717
08/08/29 01:53:34
すんまそん。コードの2行目は
list.add(new Parent());
じゃなくて
list.add(new Child());
でした。どっちにしろ結果は同じなんですけどね。
719:デフォルトの名無しさん
08/08/29 02:02:59
>型を見るとadd()の引数がnullになってました。
?
720:デフォルトの名無しさん
08/08/29 03:21:38
>717
何度書いたか分からんが、ジェネリクスは静的解決、キャストは動的解決。
List<? extends Parent>
という宣言を書いたからオカシイ。
そもそも、宣言部分の代入式のほうで、<Child> としているではないですか。
何故、List<Child> と書かないのですか?
721:717
08/08/29 03:26:41
>>719
Eclipseでの話となりますが・・・
「list.」までを入力するとメソッド一覧が出てきますよね?
そこでaddの定義を見ると、add(null arg0)となっているんです。
addをCTRL+左クリックで表示されるクラスファイルエディターでも確認できます。
722:デフォルトの名無しさん
08/08/29 03:38:10
なんでジェネリックス入れてRTTI入れなかったんだっけ?
VMの実装が複雑になるから?
723:デフォルトの名無しさん
08/08/29 03:53:44
それがJavaだから。
724:デフォルトの名無しさん
08/08/29 04:10:33
>>717
List<? extends Parent>
には、Parent を継承したクラス Child1 や Child2 などを用いた
List<Child1> や List<Child2> などが代入されているかもしれない。
これらが同時に安全に add できるものは、
どんな型にもキャストできる null しかない。
725:デフォルトの名無しさん
08/08/29 09:03:12
デュアルコアのCPUが2スレッドを同時に処理するJavaプログラムを動かすとします。
この場合1コアあたり1スレッドなんていう動作になるんでしょうか?
もしそうだとすればnコアでn未満のスレッドを動かしたときどうなるのか非常に気になりますが。
726:デフォルトの名無しさん
08/08/29 10:10:19
>>725
Sun の Java VM であればネイティブスレッドなので 1 コア 1 スレッドで動くことができる。
というか、1 コアが 1 スレッドしか動かせないと思ってないか?Intel だって Hyper Threading
で 1 コア 2 スレッド動かせるし、Sun の Niagara 3 にいたっては 1 コア 16 スレッド(1 CPU
16 コアなので全体で 256 スレッド)動くぞ?
> もしそうだとすればnコアでn未満のスレッドを動かしたときどうなるのか非常に気になりますが。
別に気にならないだろ。普通に動くだけだが、何か変な妄想してないか?
空いてるコアは別の仕事するだけだ。
727:デフォルトの名無しさん
08/08/29 10:22:07
従来のシングルコアで10スレッド動かしたら
1コア当たり何スレッドの処理をするんだろうか?
Javaプログラムだと5スレッドかもしれないし、100スレッドかもしれない
しかし、これだと処理されないスレッドが発生し、さらに
他のスレッドも待ち状態のままになり、見かけ上ではフリーズしたのと同じだ
これを回避するためにPentium4のHT技術が開発されたんだな
Intelすげえという電波ですねわかりません
728:デフォルトの名無しさん
08/08/29 14:55:48
コア数よりスレッド数が多い場合は見かけ上ではあるがOSがタイマー割り込みで実現する。
シングルCPU時代のスレッドは基本的に待機スレッド。
ビジースレッドの並列処理で処理効率をあげるような手法はマルチじゃないと意味はないが、
基本的にIOやイベント待ちでスレッドは止まっているものだ。
それからHTは微妙でビジースレッドの並列処理向きじゃないんだよな。
729:デフォルトの名無しさん
08/08/29 15:13:40
新規質問。
Servlet 作ってて困っているのだけど、
スレッドID ってスレッドが動いてる時に突然変更されることってありえる?
730:デフォルトの名無しさん
08/08/29 15:17:10
>>729
ない
ってJavadocに書いてあるよ
731:デフォルトの名無しさん
08/08/29 16:00:09
intelがjava bytecodeとclassesを直接読み取っちゃうCPU命令を実装してくれればいい。
732:デフォルトの名無しさん
08/08/29 20:56:38
>>731
死屍累々ってほどでもないが、すでにそういうチップは作られていて全く普及して無い。picojavaとか。
そもそも Java の byte code 自体がハードで実装するには不向きな内容だし。
昨今は実行時プロファイリングでホットスポットを解消するほうが実行速度が上がるし。
733:デフォルトの名無しさん
08/08/29 21:24:02
intelのfloatや超越関数とかの機械語は、ibmやsunから見ればハードでの実装は不向きな内容であって、
それこそsin[x]なんかはソフトウェア(ライブラリ)で実装するもんだろうな。
つまり、java bytecodeはハードでは不向きという考えは古い考えじゃないの?
君みたいなゴミにとってはこれぐらいの話しすらついて来れないんだろうけどww
734:デフォルトの名無しさん
08/08/29 21:26:14
jvmとjavaはもともとは家電(ハード)組み込みの設計だったしなぁ
735:デフォルトの名無しさん
08/08/29 21:53:26
>>>732
おまえはどこに行っても相手にされないし無能なやつだな
736:デフォルトの名無しさん
08/08/29 23:41:58
テキストファイルのエンコーディングが予めわかっていない場合
どうやって適切なエンコーディングで読むのでしょうか?
Javaのライブラリを使用すれば、自動的に適切なエンコーディングで読んでくれるものがあるのでしょうか?
737:デフォルトの名無しさん
08/08/29 23:47:19
教授目指してみようかな。
それは結構面白いかも知れない。
戦国時代に生まれたかった。
そして戦場で野垂れ死にしたかった。
738:デフォルトの名無しさん
08/08/30 00:14:47
先生にも2つのタイプがあってな、1つは研究者で教えるのが仕事じゃなくて技術の追求が仕事で、もう1つは教えるのが仕事の教師でどちらかといえば過去・既存技術に精通していて教えたり話したりするのが好きで上手な人。
聞きかじった最先端の雑記を偉そうに語るのは、先生じゃなくても無能なサルでも出来るけど、お前のタイプはどっちだ?
739:デフォルトの名無しさん
08/08/30 00:27:33
MITの教授になりたい。
740:デフォルトの名無しさん
08/08/30 00:29:47
>>736
不可能です。
あきらめてあてずっぽやるか、人間さまに直接おたずねください。
741:デフォルトの名無しさん
08/08/30 00:39:06
少なくとも、最新技術を追いかけるのは最先端のオナニー・ショウを見てるようなものでしかないよ。
それよか、過去の技術や発明・基盤技術をちゃんと知ってるかどうかじゃないの?
大学でやってんならなおさらPCの歴史とかPCがたとどって来た道を知らないとねぇ。
ハードよりなら制御とか組み込みだし、ソフトよりならアルゴ・ライブラリとかコンパイラじゃないの?
すくなくとも、intelの機械語sin[x]は実際はハード内部でデコードしてハード・ロジックのライブラリを呼び出してるだけだしw
まずは自分用のCコンパイラを作れるかじゃないかな?
742:デフォルトの名無しさん
08/08/30 00:42:41
>>741
針が太すぎて、ブランコ代わりに腰掛けられるよ・・・
743:デフォルトの名無しさん
08/08/30 00:43:36
先端オナニーですね、分かります。
744:デフォルトの名無しさん
08/08/30 00:46:00
じゃう゛ぁとともにあらんことを。
745:717
08/08/30 00:55:29
>>720
それだけじゃ>>724みたいな結論にたどり着けないっすよ先輩。
理解してる人しか理解できないヒントというか何というか。
>何故、List<Child> と書かないのですか?
Genericsの勉強中に、クラス間に継承関係があっても
List<Base> = new ArrayList<Child>();
のような事はできませんが、
<? extends Base>を使えば可能、という記述を見つけたので
試していただけです。で、add()ができないのは何故かと。
>>724
仮に可能であれば、
Child hoge = list.get(0);
とした時にChild1やChild2を返してしまいClassCastExceptionが発生するため危険、
という事でいいですか?
List<? extends Base>#get()の返り値の型をBase型として返せば
いいような気もしますが、それもやはり不都合があるんでしょうか。
746:デフォルトの名無しさん
08/08/30 01:02:26
ジャヴァーは、言語仕様や文法よりも「ライブラリ☆命」なんですが・・・
747:デフォルトの名無しさん
08/08/30 01:35:25
>>745
List<? extends Parent> list = new ArrayList<Child1>();
list.add(new Child1());
list.add(new Child2()); // ←ココ
748:デフォルトの名無しさん
08/08/30 02:02:49
>>745
>List<? extends Base>#get()の返り値の型をBase型として返せば
List<? extends Base> list = new ArrayList<Child>();
を例えば
List<Child> childList = new ArrayList<Child>();
List<? extends Base> list = childList;
としてみましょう。
list.add(new Base());
が実行された場合、list.get() は Base インスタンスを返せるでしょうが、
childList.get() は Child のインスタンスを返せる(返すことを保証できる)でしょうか。
749:デフォルトの名無しさん
08/08/30 10:08:37
>>743
SFCの『ラブクエスト』を思い出した。
「先っちょ、先っちょ、気持ち良い!」
750:デフォルトの名無しさん
08/08/30 10:43:44
>>733
コプロセッサって知ってるか?
>>735
そうだな。オマエくらいしか相手にしてくれなくて人生寂しいよ。
でもオマエがこうやってレスしてくれて、マジな話ちょっとうれしかった。
無視されるのが一番辛い。煽りでもなんでも、反応してもらえてサンキュ。
751:デフォルトの名無しさん
08/08/30 12:18:08
ぬるぽ
752:デフォルトの名無しさん
08/08/30 12:36:16
KeyTypedの中でgetKeyCharを使って入力をコンソールに表示しようとしても0としか表示されません。
getKeyCharなら、アルファベットキーは表示されるのですが、矢印キーの時は何も表示されません。
どうしてでしょうか?
753:デフォルトの名無しさん
08/08/30 15:32:44
JScrollPaneのJTableについて質問です。
例えば、あるボタンを押したらJScrollPaneがJTableの1行分だけ
下または上にスクロールする、というようなことは可能でしょうか。
JTable内で選択されている行を、そのボタンを押せば自動的に
ひとつ次or前の行に選択を移動させるようにしようと考えているのですが、
ScrollPaneに表示されている行内の終わりからボタンでさらに選択を奥に移動させると、
選択行は変わりますが、スクロールはしてくれないので、どうしたものかと悩んでいます。
754:デフォルトの名無しさん
08/08/30 15:42:13
>>752
> KeyTypedの中でgetKeyCharを使って入力をコンソールに表示しようとしても0としか表示されません。
のgetKeyCharはgetKeyCodeの書き間違い?
なら、
> KEY_TYPED イベントの場合、keyCode は VK_UNDEFINED
なのでVK_UNDEFINED(=0)が返る。
矢印キーなどのキーコードが取りたければ、
keyTypedでなくkeyPressedやkeyReleasedでイベントを捕まえる。
755:752
08/08/30 15:50:11
>>754
その通りCharじゃなくてCodeでした。
756:デフォルトの名無しさん
08/08/30 16:12:37
>>753
これは使えないかな?
URLリンク(java-house.jp)
757:デフォルトの名無しさん
08/08/30 16:58:51
String str = "ABCDE";
という文字列があって、この文字列を逆にして表示させたいです。
最終的に、System.out.println(str); で、画面には
EDCBA と表示させたいです。
文字列を引数にとって、それを反転して返すメソッドがあるのは
分かったのですが、そういうのを使わないで、配列やforをうまく使って
自力で反転させたいのです。
charAt(int index)やfor辺りで試行錯誤したのですが、どうも辿り着きません。
方法を教えてもらえませんでしょうか?
758:デフォルトの名無しさん
08/08/30 17:03:41
>>757
無駄なコードを書くことに、うまい方法なんて無いのでは?
759:デフォルトの名無しさん
08/08/30 17:06:24
>>749
>>750
>>751
ぬるぽ
ぬるぽ
ぬるぽ
ぬるぽ
760:デフォルトの名無しさん
08/08/30 17:06:38
>745
申し訳ありません。724 や 748 の話を良く聞いてください。
お詫びに、関係しそうな記事を置いていきます。
Javaの理論と実践: Generics、了解!
URLリンク(www.ibm.com)
761:デフォルトの名無しさん
08/08/30 17:13:23
>>756
どうもありがとうございます。その先に記述されているのをヒントとして、
ほぼ完成というところまでたどり着けました。
ただ、スクロールバーの▼・▲のボタンや、バーで移動させた際に、
その移動をさせたことを検出させて、かつ移動した距離を知りたいのですが、
どうにか知る術はないものでしょうか?たびたびすいません。
762:デフォルトの名無しさん
08/08/30 17:17:03
>757
Stringオブジェクトは、作成後、状態を変更できません。
ということは、反転した Stringオブジェクトを作成する時点で、
既に反転した状態を持つ「何か」を用意する必要があります。
「何か」は、char配列でも良いですが、単に追加するだけなら
java.lang.StringBuilder/Buffer が良いと思います。
763:デフォルトの名無しさん
08/08/30 17:19:30
URLリンク(www.apple.com)
このページの最上部のメニューバーみたいなのをウェブサイトに実装したいのでですが
何かオススメのスクリプトありませんか?
カテゴリ(ジャンル)が20個ぐらいありそれを1つのページに表示させたいです。
764:デフォルトの名無しさん
08/08/30 17:57:51
相変わらずひねくれてる奴多いな。
>>757はそりゃアルゴリズムの問題でjavaとはあまり関係ないない。
str2=new StringBuffer().append(str).reverse().toString();
これがjava流。良くAPIを読むとサロゲートはreverseしないとかがまたいい!
765:757
08/08/30 18:13:46
>>758
確かにうまくはないですね、言い方が悪くてすいません。
ただ、専用のメソッドを使うより、他のやり方を考えたら
プログラムの理解度も高まるかなーと思いまして。まだ初心者なんです。
>>762
配列を反転する方法がわからなかったので、
結局配列もStringBuilder/Bufferも使わないアナログなやり方で完成しました(´・ω・`)
ありがとうございます。
>>764
ひねくれものですかね?ヽ(´ー`)ノ
766:デフォルトの名無しさん
08/08/30 18:46:46
>>765
理解したいなら、reverseのソース読むべきじゃね?
767:デフォルトの名無しさん
08/08/30 18:53:12 BE:511027586-2BP(5957)
ボタンを押すと定められた波形・音程で音が鳴る、という簡単なアプレットをMac OS X上で作りました。
当然Mac上では問題なく動くのですが、Windowsではうまく動きません。
音意外の部分は問題ない挙動なのですが、どうにも音だけが出ません。(サンプルレート8000、ビットレート16、モノラル)
Javaのバージョンも最新です。
何か心当たりのある方、教えて頂けると助かります。お願いします。
768:デフォルトの名無しさん
08/08/30 19:15:02
テーブルで常に一行だけしか選択できないようにする方法ってあります?
769:デフォルトの名無しさん
08/08/30 19:32:00
>>702
じゃあ、これから正直になりますので、友達になってください。
770:デフォルトの名無しさん
08/08/30 19:45:00
>>768
APIドキュメント見てもいないのか?
JTable#setSelectionMode 辺りを探れ
771:デフォルトの名無しさん
08/08/30 19:49:13
>>765
どんな方法にしろ、目的を達成するプログラムが書けたのならOKだ。
後は 766 の言うように他の同じことをするプログラムを見て、違いを観察するんだ。
自分で書き、他人のを読み、違いを吸収して次に生かせばいい。
772:デフォルトの名無しさん
08/08/30 20:29:55
>>761
AdjustmentListenerは?
scrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener(){
int oldValue = 0;
public void adjustmentValueChanged(AdjustmentEvent e){
if(e.getValueIsAdjusting()) return;
System.out.println("Adjusted: " + (oldValue - e.getValue()));
oldValue = e.getValue();
}
});
とかで
773:デフォルトの名無しさん
08/08/30 21:00:41
java初心者です。お聞きしたいことがあります。
javaからPHPにバイナリデータを渡したいのですがデータの中に0x00が
含まれていると2byteの0x5c,0x30に置き換わってしまいます。
どなたかご教授おねがいします。
String postParams = "p1=";
byte[] byteBuf new byte[1024];
OutputStream oStream = null;
:
con = (HttpConnection)Connector.open("URLリンク(localhost)", Connector.READ_WRITE, true);
con.setRequestMethod(HttpConnection.POST);
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
oStream = con.openOutputStream();
oStream.write(postParams.getBytes());
oStream.write(byteBuf); //←ここのDATAに0x00が含まれていると
oStream.close();
con.connect();
:
774:デフォルトの名無しさん
08/08/30 22:45:54
>>773
>byte[] byteBuf new byte[1024];
コンパイル通ってるコード?
byteBufに実際は何を入れてるのか。
775:デフォルトの名無しさん
08/08/30 22:54:34
HTTP POST でベタにバイナリなんて送れたっけ?
776:デフォルトの名無しさん
08/08/30 23:00:20
JTableでアクティブな行は青色になりますよよね?
それに加えて行の中でクリックしたセルだけ青い囲みがかかるんですけど
このセルの囲いをなくすことってどうやったらできるんでしょうか?
検索してもちょっとわからないので、、、ご教授ください。
777:デフォルトの名無しさん
08/08/30 23:02:31
>>772
おお、ありがとうございますm(_ _)m
無事にできました。
778:デフォルトの名無しさん
08/08/30 23:12:07
>>776
setCellSelectionEnabled(boolean)とかなかったっけ?
779:デフォルトの名無しさん
08/08/30 23:16:39
>774,775さん
上記例では部分抜き出しで書きましたがコンパイルは通ってます。
データは仮に
[0xff,0x10,0x00,0xff]だとしたらPHPで受け取って
そのまま送り返して調べた結果では、
[0xff,0x10,0x5c,0x30,0xff]となってます。
画像データなども送りたいと考えているのですが。
宜しくお願いします。
780:デフォルトの名無しさん
08/08/30 23:55:40
データの持ち方について質問です。
プリミティブ型はスタックにデータを持ってて、ヒープ領域は使わないと認識してますが合ってますでしょうか。
それと、プリミティブ型の配列はヒープ領域を使ってて、要素0のデータへのアドレスをスタックに格納して、ヒープ領域では連続した領域に格納されているという認識で合ってますでしょうか。
あと、オブジェクト型の配列でも同様に、ヒープ領域では連続した領域に保持されているのでしょうか?
781:デフォルトの名無しさん
08/08/31 00:04:13
>>778
うーむ、それだとセルのみ選択したときに色がつくようになっちゃうんですよね・・・。
逆のことをしたいんですが、何かないでしょうかね。
782:デフォルトの名無しさん
08/08/31 00:11:39
>>779
>byte[] byteBuf new byte[1024];
なんて、コンパイル通る訳無いだろ。
コンパイルも通らないコードなんか載せられても何も答えられんわ
783:デフォルトの名無しさん
08/08/31 02:01:47
>>780
jvm.dllの実装上の問題です。普通はそのように実装するんですけど、あなたにピッタシのAPIはByteBuffer.allocateDirectですかね。
784:デフォルトの名無しさん
08/08/31 02:42:37
>>782さん
あああ!、申し訳ないです。'='←書くの抜けてました。
プログラム上ではちゃんと書いてます><
byte[] byteBuf = new byte[1024];
何度もすみません。
785:デフォルトの名無しさん
08/08/31 03:11:15
>>779
コード 0x00 (NUL) が 0x5C 0x30 (\0) に変換される、と。
773 では、Content-Type に application/x-www-form-urlencoded を指定しています。
この指定自体は、form を送信する際の一般的な設定だと思います。
しかし、この指定によって、クライアントかサーバか、どちらか分かりませんが、
変換が行われてると、私は思います。
つ【パケットキャプチャ】かな?
786:デフォルトの名無しさん
08/08/31 03:33:00
>>781
TableCellRenderer を見れ。
787:デフォルトの名無しさん
08/08/31 03:40:28
>>779
>そのまま送り返して調べた結果では、
PHP が受け取ったモノをチェックしろよ。
送り返して調べたって、送り返す時にヘマしてたら分かんなくなるだろ。
788:デフォルトの名無しさん
08/08/31 10:26:08
URLリンク(www12.plala.or.jp)
これの真ん中あたりにあるアプレット動く?
うちのXPだとIEでもFirefoxでも動かん。
789:デフォルトの名無しさん
08/08/31 11:31:32
x-www-form-urlencodedの意味を考えろってことで。
790:デフォルトの名無しさん
08/08/31 11:34:44
>785,787さん
PHP側では
<?php
$p1 = isset($_REQUEST['p1']) ? $_REQUEST['p1']: '';
$p2 = isset($_REQUEST['p2']) ? $_REQUEST['p2']: '';
if ( $p1 ){
echo ($p1);
}
?>
としているのですが。
PHP側でも調べてみます。
791:デフォルトの名無しさん
08/08/31 11:43:07
>>773
お前の書いたsetRequestMethodとsetRequestPropertyを一万回読み返せ
BASE64でエンコード/デコードするか、URLにエンコードするか、
Content-Typeをimage/jpegにするか、バラバラすぎる。
あと受け側がどう処理するかによって異なる。
792:デフォルトの名無しさん
08/08/31 13:31:24
酷い流れデツネ
793:717
08/08/31 15:31:20
>>747 >>748
すんません。
実際に返されるインスタンスの型が問題であって
返り値の型をBaseクラスにしても全然解決になってないですね。
質問に答えてくださった先輩方ありがとう。
794:デフォルトの名無しさん
08/08/31 15:39:43
JPanel上でImageIOつかいたい
どうしたら良い?
795:デフォルトの名無しさん
08/08/31 16:04:53
というかHTTPすらろくに理解してないんじゃないのか?
x-www-form-urlencodedでバイナリ送るとか吹いたぞw
796:デフォルトの名無しさん
08/08/31 16:13:39
ホームページのフォームからJava servletでMySQLに複数の名前と番号のセットを
入力したいのですが参考になるホームページが見つかりません。
参考になるサイトやブログを教えていただけないでしょうか。
797:デフォルトの名無しさん
08/08/31 16:38:00
795のように書けばあたかも知ってるように見えるが大概は知らない場合が多い
798:デフォルトの名無しさん
08/08/31 16:55:19
コンソールで入力した文字列から、特定の文字が何文字含まれているか
表示するプログラムを作りたいのですが(例えば「javaprogram」と入力したら
「aは3個含まれています」と表示されるような感じです。
どうすればできるでしょうか?相当考えたのですが…
何の構文やメソッドを使うのか…どうかヒントをば…
799:デフォルトの名無しさん
08/08/31 17:00:25
>>798
ヒント:配列
800:デフォルトの名無しさん
08/08/31 17:13:04
String#indexOf
801:デフォルトの名無しさん
08/08/31 17:41:51
>>794
BufferedImage と ImageIcon の合わせ技。
802:デフォルトの名無しさん
08/08/31 17:44:52
BufferedImage bi = jPanel1.getComponent(0).getGraphicsConfiguration()
.createCompatibleImage(10,10);
これでいいのかな
803:デフォルトの名無しさん
08/08/31 17:48:50
>>796
1個のデータは登録できるのか?
できてないなら、無理すんな。
まずは単一で考えなよ
804:デフォルトの名無しさん
08/08/31 17:50:12
>>798
・char[] にしてまわす
・StrigBufferにしてまわす
どちらでも好きな方を
805:デフォルトの名無しさん
08/08/31 18:54:53
または、特定の文字をすべて削除した文字列を作って長さを比べる
自分も質問なんだけど、テキストエリアの後ろに画像を入れるにはどうしたら良いのかな。
806:デフォルトの名無しさん
08/08/31 18:59:19
正確にはJScrollPaneだった・・
807:デフォルトの名無しさん
08/08/31 18:59:44
HTMLDocument使うとか、画像に対応したDocumentとViewを作ればいいんでない?
808:デフォルトの名無しさん
08/08/31 19:00:48
ん?やりたいことがいまいち分からない・・
背景に画像?
JScrollPaneのViewportに画像描画してJTextAreaを透明にってこと?
809:デフォルトの名無しさん
08/08/31 19:27:46
>>786
すんません、調べてみたんですがどうしてもわからない・・・
CellRendererの中にクリックでアクティブになったセルに関する設定項目が見つからないっす。
説明が下手なんですが、わかりやすく言うと、クリックされたセルのある行は薄青になりますよね?
それとは別に、その薄青の行の中でクリックしたセルだけボーダーラインが太くなりますよね。
あの太いボーダラインをなくしたいんです。
setRowSelectionIntervalを利用すると行が薄青になるだけなので、テーブルのMouseListenerに
1 int rowIndex = jTable.getSelectedRow();
2 jTable.removeRowSelectionInterval(rowIndex, rowIndex);
3 jTable.setRowSelectionInterval(rowIndex, rowIndex);
とやってみたのですが、これだと2の部分では薄青だけ消えて、太いボーダーラインが残ってしまいます。
どうすりゃ消えるんでしょうか、、、
810:デフォルトの名無しさん
08/08/31 19:48:48
>>
vewportでやってみたのですが、イメージがやけに暗く表示されてしまいました。
バッファしてる間に暗くなるとかあるのかな・・・
811:デフォルトの名無しさん
08/08/31 19:56:39
ないない。
もうちょっと詳細を教えてくれないと何とも言えないよ
812:デフォルトの名無しさん
08/08/31 20:00:09
すいません。
出かけ先にいるので帰って見直してみます。
ありがとうございました。
813:796
08/08/31 20:12:47
>>803
単一では出来ます。
URLリンク(www.atmarkit.co.jp)
を参考にコンパイル、MySQLの設定及びデータベースとテーブルも設定しております。
問題は、同じようなデータがありそれを複数同時に入力できないところです。
814:デフォルトの名無しさん
08/08/31 20:21:40
>>813
最大10件とかならば、name-1, value-1 のように固定でHTMLに埋めてしまえ
完全可変にするならば、動的にJavaScriptでinputを作っていけばいい
815:デフォルトの名無しさん
08/08/31 20:23:18
>>805
Swingの話かHTMLの話か解らない
SwingだったらTextAreaとLabelを配置したパネルを作って、それを配置する方が楽だし、再利用しやすい形になると思う
816:796
08/08/31 20:52:25
>>814
すみません説明不足がありました。
仰るとおりHTMLのフォームはname[1],name[2]...のようにフォームに番号を付けています。
servletの方ではこれをループでMySQLに入力するようにしています。
また、名前(漢字)と数字なので先にループで配列に入力するといった方法も出来ませんでした。
JavaScriptによる入力ですが技術的に難しいです。
817:796
08/08/31 21:02:33
肝心なことを忘れてました。
もし、フォームに名前はあっても番号はない場合は登録せず
次のフォームを読み取らせ、ループは名前が無くなったら出るというシステムです。
長々となってしまいまして申し訳ありません。
818:デフォルトの名無しさん
08/08/31 21:05:26
ネイティブ言語や .NET 言語で実現できることは、Java でも実現できますか?
819:デフォルトの名無しさん
08/08/31 21:06:14
無理。
820:デフォルトの名無しさん
08/08/31 21:08:23
こんな感じでできるだろ
for(int i = 1; i < n; i++) {
getParameter("name[" + i + "]");
getParameter("value[" + i + "]");
}
821:796
08/08/31 21:13:43
>>820
データは取得できるとは思うのですが、
データを保存またはMySQLに連続して登録するときはどのようにすればよろしいでしょうか。
822:デフォルトの名無しさん
08/08/31 21:24:00
>>821
Valuesをつなげるか、何回もUpdateとかInsertする
823:デフォルトの名無しさん
08/08/31 21:42:17
beginTransaction();
for(int i = 1; i < n; i++) {
getParameter("name[" + i + "]");
getParameter("value[" + i + "]");
insertOrUpdate(data);
}
commit();
824:デフォルトの名無しさん
08/08/31 22:37:08
テーブルでソートを行うために
setAutoCreateRowSorter(true)を使っているのですが、
ソートを一時的に無効にしたい場合が生じました。
setAutoCreateRowSorter(false)ではだめなようなので、
setRowSorter(null)を使っているのですが、
このような方法でよいものでしょうか。
825:デフォルトの名無しさん
08/08/31 22:47:13
>824
APIドキュメントは読みましたか?
そこに書いてありませんか?
826:798
08/08/31 23:05:53
>>799 >>800 >>804
ヒントありがとうございます。
ヒントを頼りにここまではできたのですが、
URLリンク(hisazin-up.dyndns.org)
文字列を入力するとwhile文が無限ループになります。
無限になるのはわかるんですが、何を入れれば無限がとめられるのかわかりません。
もうこれ以上しぼっても何にも出てこないので、どうか何が足りないのか指摘をお願いしますorz
827:デフォルトの名無しさん
08/08/31 23:06:51
>>819
実現な無理なことって何?
※中間言語を介しているのでネイティブより遅いってのはナシ
828:デフォルトの名無しさん
08/08/31 23:08:16
× 実現な無理
○ 実現が無理
829:デフォルトの名無しさん
08/08/31 23:08:28
while(!(s = br.readLine()).equals("end")){
.....
}
こうして、読み込みと同時にループ判定ってのをJavaではよく使うよ。
830:デフォルトの名無しさん
08/08/31 23:15:12
てかループの最後でreadLineしなきゃダメだろ、冷静に考えろ
831:798
08/08/31 23:22:32
>>829 >>830
もうほんとありがとうございます。どっちのパターンでもできました。
未熟ですいません。途中泣きそうになってました。
教えていただいた知識はありがたく吸収させて頂いて、
完全体への糧とさせて頂きます。
832:デフォルトの名無しさん
08/08/31 23:23:39
アグモン進化~~~!
833:デフォルトの名無しさん
08/08/31 23:24:47
javaの文字処理は、
while (r.ready()) {}
がセオリーなんだけど・・・
アホな奴が書いた説明を読んだんじゃないの?
834:デフォルトの名無しさん
08/08/31 23:34:27
セオリー(笑)と言い切る根拠示したら?
835:798
08/08/31 23:34:28
>>832
ちょww
>>833
独学でやってるんですが、教科書にはその書き方はのってなかったですね。
でもちょっとした応用ですよね。気付かない自分の無力としておきます。
ありがとうございます。
836:デフォルトの名無しさん
08/08/31 23:37:55
VB上がりの人は、rubyかperlの方からやっるといいよ。
837:デフォルトの名無しさん
08/08/31 23:39:14
>833
言いたいことは解るが、その場合は
while(r.ready()) {
System.out.println("文字列を入力して下さい");
String s = r.readLine();
if(s.equals("end")) break;
// 以下同様
}
と書かなくてはならないだろ。
そこまでちゃんと説明しないのはあまりにも無責任。
ついでにいえば、r.ready()がfalseになることは基本的にないからな、標準入力からとっているわけだし。
838:デフォルトの名無しさん
08/08/31 23:40:12
>>795
こいつには「友達はいないだろうな」と感じるのは、俺だけなのかな・・・
839:デフォルトの名無しさん
08/08/31 23:43:04
たぶんMSDNのVBの記事ののりで、いつまでもお子ちゃまのままなのか、もともと糞まみれのまま生活してるとかじゃないか?
840:デフォルトの名無しさん
08/08/31 23:44:18
だなw
841:デフォルトの名無しさん
08/08/31 23:45:40
ぬるぽ
842:デフォルトの名無しさん
08/08/31 23:52:42
>>805
です。帰ってきました。
具体的には
JPanel panel = new GraphicPanel("image.jpg");
JTextArea area1 = new JTextArea();
JTextArea area2 = new JTextArea();
area1.setOpaque(false);
area2.setOpaque(false);
JScrollPane scrollA = new JScrollPane(area1);
JScrollPane scrollB = new JScrollPane(area2);
scrollA.getViewport().setOpaque(false);
scrollB.getViewport().setOpaque(false);
panel.setLayout(new GridLayout(2,1));
panel.add(scrollA);
panel.add(scrollB);
という形でやっているのですが・・
GraphicPanel()は、別クラスでイメージ名を渡すとそれがパネルの背景になります。
843:デフォルトの名無しさん
08/08/31 23:56:03
>>834
>>837
流れを見ると、君が勉強不足なだけのようだけど?
844:デフォルトの名無しさん
08/08/31 23:59:56
>>837はかなり問題発言だと思うけど、このスレ的には放置でいいの?
845:デフォルトの名無しさん
08/09/01 00:01:36
ITドカタ出身のカスみたいだし、ほっとけばいいんじゃない?
846:デフォルトの名無しさん
08/09/01 00:03:55
>>841,844,845
だなw
847:805
08/09/01 00:06:48
どうやらJScrollPanelの透明化が出来てないようです。。
848:805
08/09/01 00:13:08
setOpaque
getViewport().setOpaque
どちらもやると透明になりました!!すれ汚しすいませんでした。
849:デフォルトの名無しさん
08/09/01 00:15:32
そうだ!大学や専門学校でVBとかC#を教えればいいんじゃんか!
VBの方が使ってる人多いし、VBアプリもいっぱいあるじゃん。
高校ではBASIC教えてんだから、何で大学とかでVBを教えないんだよ。オレ頭いい~
850:デフォルトの名無しさん
08/09/01 00:19:54
>>805
これ参考になるかな?
URLリンク(terai.xrea.jp)
>>809
使ってるのはDefaultTableCellRendererだよな?
だとしたらgetTableCellRendererComponenメソッドをオーバーライドして、
super.getTableCellRendererComponenで取ってきたComponentを
JLabel(もしくはJComponent)でキャストしてやつを
setBorder(null)にすればうまく行く様な気がする。
851:デフォルトの名無しさん
08/09/01 00:37:46
ジャヴァ最高!
サン最高!
アムロ最高!
852:デフォルトの名無しさん
08/09/01 00:45:04
以下でchannelを閉じるときにFileOutputStreamって自動的に閉じますよね?
FindBugsさんに怒られて不安になってしまいますた。
FileNotFoudExceptionとIOExceptionはメソッド単位で投げてます。
clearしているstreamは引数で与えているByteBufferです。
File file = new File(fileName);
FileChannel channel = null;
try {
channel = new FileOutputStream(file).getChannel();
channel.write(stream);
} finally {
// 事後処理
stream.clear();
if (null != channel) {
channel.close();
}
}
853:デフォルトの名無しさん
08/09/01 00:52:09
javaで開発してる人の半分以上はwindowsであるという事実がある。
しかしjvm runtimeも.net runtimeもほぼ同じことが出来るのに、なぜこれほどまでにMSは嫌われるのかが謎だな。
さらにwindowsのvb, c#で簡単なこと(例えばメディア・プレーヤ系とか)をわざわざjavaでやるのもまたなんとも香ばしい。
今の時代の主流OO言語風に言えば、.netで作ったライブラリをjvmから呼び出せば済むことなんじゃないの?
854:デフォルトの名無しさん
08/09/01 01:03:19
dot net と jvm bytecode が相互にアクセスして相互に運用が出来るライブラリとかはもう誰かが作ってるよ。
どっかにあったような…海外だったかな?
855:デフォルトの名無しさん
08/09/01 01:30:28
>>853
効率だけで物事を選ぶわけじゃないからだろ。
856:デフォルトの名無しさん
08/09/01 01:39:28
>>841
ガッ
857:デフォルトの名無しさん
08/09/01 01:45:30
俺のサーバPC(インテルCPUじゃないの)でiphone使えたりmp4再生できても意味ないからな・・・
それよりも、それらコーディックの類は特許の塊でもあるから、jvmで実装するよりもそういうのは特許に関心があるMSに任せといて、
それらメディア系のファイル使うときは、dotnetやjavaのライブラリAPIでアクセスできれば十分じゃないの?
h.264みたいな最先端の技術はさすがに専用のデコーダ兼表示端末(インテルPCとかかな)ないと実用じゃないだろうけど、
そうじゃなければ、昔からあるシェルのパイプ機能に毛が生えたのでいいよ。
特許がどうとか言うと、ライセンスとか裁判とかジャスラックとかウザイだろw
どうせおまえなんか法学部出身なわけでもなければ民事裁判やったことないんだろうしww
858:デフォルトの名無しさん
08/09/01 01:53:59
iniファイルでプロパティ設定するのは骨が折れるから、プロパティ設定辺りはいまどきはGUIでサクッとやりたいなと思うけど。
Javaがデスクトップとかメディアに進出もいいけど、どうせ特許の壁にぶつかるし、出来ても所詮はネイティブであって、携帯電話でそのデコーダ(コーディック)が動くわけでもないし、
今必要なのは、swingみたいにコンポーネントやbeansを作ってくれればいいでない?
java/jvmの管理とかマネジメント充実も一通り終わったから、そろそろデスクトップのUIとかの方かなと思う。
859:デフォルトの名無しさん
08/09/01 02:42:31
夏休みは終わったらしいぞ
860:デフォルトの名無しさん
08/09/01 03:35:07
すれ違い
861:デフォルトの名無しさん
08/09/01 08:04:21
どなたか
>833
の解説をお願いします。
reader.ready() は「次の読み込みがブロックされるかどうか」だけとの事ですので、例えば以下の場合には正常に動作しない場合もあるかと思います。(※クライアントからデータが未送信の場合)
Socket s = serverSocket.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream()));
while(reader.ready()) {/* 処理 */}
また、StringReader#ready() は常に true を返したりもします。
このような危険性がありながらなお ready() がセオリーとされる理由を御教示頂けないでしょうか
862:デフォルトの名無しさん
08/09/01 10:30:33
それよか、.NetとJVMを結びつけるライブラリとかほんとにあんの?
863:デフォルトの名無しさん
08/09/01 10:44:40
>>861
たぶん君は、ストリームのことを大学で教えてもらえなかった哀れな人なんだろう。
まずstdinを(line!=null) ?とかでナル・チェックするのはマズイことを知れ。
864:デフォルトの名無しさん
08/09/01 12:13:46
>863
お返事ありがとうございます。
独学なので更に哀れな知識量しかなく、色々間違っているかと思います。
もう少々お付き合い下さい。すみません。
> stdinを(line!=null) ?とかでナル・チェックするのはマズイことを知れ。
との事ですが、その前に疑問を整理させて下さい。
元々の疑問は、「文字処理は ready()がセオリー」との発言でした。これは標準入力に限らず、Reader 系全般に当てはまるかと思います。
ここで、敢えて ready() をセオリーと言っていた事がよく分かりませんでした。
Reader#ready() は、「次の読み込みがブロックされるかどうか」を返す訳ですから、入力が無い == ブロックされる == false となり、例えば標準入力であれば、起動直後の入力が無い場合には
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
while (r.ready()) {/* 処理 */}
としてもループ内に入ることなく抜けてしまい、期待した動作はしないかと思います。
同様に、Socket から文字列を読み込む場合でも、通信状態に応じて、データパケットが届く前に ready() が実行される事もあるかと思います。
であるのに、ready() をセオリーとする理由がよく分からず、質問した次第です。
(ファイルからの入力に限定するのであれば、ready() がセオリーでも理解はできるのですが)
頭の悪い質問で申し訳ありませんが、回答をよろしくお願いします。
あと、stdin を null チェックするのはまずい、という理由もよく分かりませんでした。
System.in は null を返さない、とかそういう単純な理由ではありませんよね?
宜しければ一緒に教えて頂けないでしょうか
865:デフォルトの名無しさん
08/09/01 14:04:51
俺は Reader#ready() 使ったことないのでセオリーとは思ってない。
stdin だろがなんだろが BufferedReader#readLine() だったら EOF->null だから当然チェックする。
>>833 >>863 の説明に期待するかw
で、Reader#ready() は「ブロックされるかどうか」じゃなく「ブロックされないかどうか」だ。
false だからといってブロックするとは限らないし、入力が無いとも言えない。
866:デフォルトの名無しさん
08/09/01 14:47:41
JTableからJScrollPaneって取得できますか。
JTableのsetVisibleだとテーブルを非表示にできないようなので、
JScrollPaneのsetVisibleを呼びたいのですが。
867:デフォルトの名無しさん
08/09/01 14:50:33
getParentで取得してチェック
868:デフォルトの名無しさん
08/09/01 14:55:54
インタフェースにあるクラス(インタフェースじゃない)を継承させることってできますか?
869:デフォルトの名無しさん
08/09/01 15:05:05
むり
870:デフォルトの名無しさん
08/09/01 16:04:35
>>867
thx!
871:デフォルトの名無しさん
08/09/01 16:41:30
基本データ型のうちなぜString型だけ先頭が大文字なのでしょうか?
これだとラップクラスと同じになりますよね。
872:デフォルトの名無しさん
08/09/01 16:54:09
Stringは基本データ型ではありません
java.langパッケージに属するクラスです
873:デフォルトの名無しさん
08/09/01 16:54:35
>>871
Stringは基本データ型じゃないだろ。
874:デフォルトの名無しさん
08/09/01 16:59:34
これだからCをやってないやつはだめなんだよな
875:デフォルトの名無しさん
08/09/01 17:09:00
ではchar型も基本データ型ではありませんね
876:デフォルトの名無しさん
08/09/01 17:12:20
どうしてそう思いますか?
877:871
08/09/01 17:23:02
すみません何か大きな勘違いをしてました
Stringはどう見ても基本データ型じゃないです
878:デフォルトの名無しさん
08/09/01 18:15:43
byteからintに符号なしでキャストしたいときはどうするんですか?
879:デフォルトの名無しさん
08/09/01 18:18:02
(int)Math.abs()
880:デフォルトの名無しさん
08/09/01 18:30:24
>>879
言い方が悪かったです
(byte)0xff が-1でなく255になるようにしたいです
881:デフォルトの名無しさん
08/09/01 18:33:24
byte b;があったとして
b&0xFF
ってすりゃいいよ。
882:デフォルトの名無しさん
08/09/01 18:36:32
(int) ((byte) 0x80) // 0xffffff80 = -128
((int) ((byte) 0x80)) & 0xff // 0x80 = 128
883:デフォルトの名無しさん
08/09/01 18:41:32
解決しました。ありがとうございます
884:デフォルトの名無しさん
08/09/01 20:01:57
> 865
返答ありがとうございました。
ひとまず、ready() の件はセオリーとは言えない、と認識して納得しました。
> で、Reader#ready() は「ブロックされるかどうか」じゃなく「ブロックされないかどうか」だ。
確かにその通りでした。大ボケこいてました。ご指摘ありがとうございます。
お騒がせしました。
885:デフォルトの名無しさん
08/09/01 20:17:22
APIもちゃんと読んでもいなければ、ソースも読んでないんだろうな。
たとえば、java.io.Ready.read():Iのソース見たことないだろw
お前のようにいつまでも妄想してようじゃ上達しないんじゃない。
それなら、いつready()を使うんだろう?
886:デフォルトの名無しさん
08/09/01 20:21:34
>>884
ready()とストリームついて知りたかったら、難しい解説本読むか、ちゃんと学校いけよw
2chでお手軽に聞くようなお手軽独学厨房にはもったいなくて教えてやんないww
887:デフォルトの名無しさん
08/09/01 20:25:17
>>885
java.io.Ready.read・・・
888:デフォルトの名無しさん
08/09/01 20:32:57
すみません
知識が浅いもので不快にさせてしまいましたら申し訳ありません
一応、判らないなりに、SunのJAVA5実装はReaderからStreamDecoder経由してio_util_md.c までは辿っています。
これ以上どこを見るといいのか教えて頂けますか
よろしくお願いします
889:デフォルトの名無しさん
08/09/01 20:33:29
ストリームも知らないなら別にナムル・チェックいいでない?
どうせargs[k]とかやってる程度の人だろうしww
890:デフォルトの名無しさん
08/09/01 20:39:34
>>885
よっぽどのアホだな・・・
891:デフォルトの名無しさん
08/09/01 20:41:23
あじゃぱー
892:デフォルトの名無しさん
08/09/01 20:41:34
>>889
日本語でおk
893:デフォルトの名無しさん
08/09/01 20:46:29
>>888
そこまでソース追いかけても分からないならタコでしょw
Reader.read():Iが何でnativeでなくてnew char[1]なのかで十分分かると思うけど・・・
もしセンスがあればだけど、多分君はお勉強はできるけど・・・あんまし・・・ってタイプでしょうか?
というよりも、それならいつready()を使うわけ?
894:デフォルトの名無しさん
08/09/01 20:49:54
東大の教授になりたかった・・・
895:デフォルトの名無しさん
08/09/01 20:51:40
>>893
バカには一生わかんねーよ
896:デフォルトの名無しさん
08/09/01 20:52:54
>>894
共産党に入れ
897:デフォルトの名無しさん
08/09/01 20:57:20
>>895
なんみょう~
なんみょう~
なんみょう~
898:デフォルトの名無しさん
08/09/01 20:59:49
まずJavaの本読むより、「バカの壁」を読んでからじゃね?
899:デフォルトの名無しさん
08/09/01 21:01:12
ListってCでいうとこのstructみたいなもんすか?
900:デフォルトの名無しさん
08/09/01 21:09:26
>>899
リストはCでもつかうだろ。
901:デフォルトの名無しさん
08/09/01 21:38:21
ready()なんか使う奴こそ糞だな!
一生ナンミョウ~やってろよww
902:デフォルトの名無しさん
08/09/01 21:49:04
>>901
いや、使う用件はあるだろ。
903:デフォルトの名無しさん
08/09/01 21:52:35
ready?
904:デフォルトの名無しさん
08/09/01 21:54:11
ストリームわかんねーの奴は「Cが難しすぎてJAVAに逃げてきました」って程度だろ。そういう奴はJAVAも無理無理。VBAかVBぐらい丁度いいよw
905:デフォルトの名無しさん
08/09/01 21:56:58
ストリームもそうだけど、スレッドも分からない奴がいたよな。
スレッド・セーフがどうとかこうとか適当な妄想を言ってたけど、アレはC#のスレだったか?
906:デフォルトの名無しさん
08/09/01 21:57:22
>>833はまったくの嘘だから気にしなくていいよ
907:デフォルトの名無しさん
08/09/01 22:05:57
StringBufferクラスの必要性をご教授ください。
Stringだけで十分だと思うのですが・・・
908:デフォルトの名無しさん
08/09/01 22:10:59
それなら、char[]で間に合うから、Stringも必要ないね
909:デフォルトの名無しさん
08/09/01 22:11:55
StringBuilderで間に合うから、StringBufferは要らないね。
910:デフォルトの名無しさん
08/09/01 22:18:08
ここは一応 初心者歓迎 となってるのを忘れてないか?
911:デフォルトの名無しさん
08/09/01 22:24:49
うん歓迎してるぜ。
912:デフォルトの名無しさん
08/09/01 22:28:42
充分にヒントになっているかと思うが?
913:デフォルトの名無しさん
08/09/01 22:34:35
>>908
悪いがそれは違うな。もう一度JAVAのオブジェクト指向プログラミングの技法とやらから初めて、一からやり直したらどうだろか?
914:デフォルトの名無しさん
08/09/01 22:38:00
>>907
StringBufferはreverse()するとき良く使いますw
915:デフォルトの名無しさん
08/09/01 22:39:56
Stringクラスは代入するたびに新しいStringオブジェクトを作るので、
メモリ的にも処理速度的もコストが高いんよ。
例えば、aとbとcの文字列を連結する場合に以下のような処理があったとすると
--------------------
String buffer = a;
buffer += b;
buffer +=c;
--------------------
StringBuffer buffer = new StringBuffer(a);
buffer.append(b);
buffer.append(c);
--------------------
Stringでは、 += bをしている処理は a に b の文字列を連結してる
のではなく、 aとbを連結したStringオブジェクトを新しく作ってる。
同様に +=c の処理でも 新しいStringオブジェクトを作ってる。
一方StringBufferでは、 .append(b) では 文字列を連結しているので
新しいStringBufferオブジェクトは作っていない。
つまり、新しいオブジェクトを作っていない(newしていない)分
メモリも速度も節約できるということ。
916:デフォルトの名無しさん
08/09/01 22:45:57
>>906
答えられもしないくせに適当なこと言うな
917:デフォルトの名無しさん
08/09/01 22:46:22
>>915
文字列の操作を行う場合は、って前提が抜けてなければ完璧な回答だったのにな
918:デフォルトの名無しさん
08/09/01 22:54:39
まぁ今はコンパイルする時点で文字列の結合はStringBuffer#append()に置き換えてくれるから単純な結合は無視しちゃっていいけどね
919:デフォルトの名無しさん
08/09/01 22:56:28
0と1を反転させる方法を教えてください。
かっこいい方法は無いですか?
920:デフォルトの名無しさん
08/09/01 23:00:00
文字列の0と1なのか別のモノの0と1なのかくらい示せ
921:デフォルトの名無しさん
08/09/01 23:01:09
かっこいい方法…俺には無理だ
922:デフォルトの名無しさん
08/09/01 23:01:30
アセンブラの頃は良く XOR したな…
923:デフォルトの名無しさん
08/09/01 23:03:47
int型でお願いします。
924:デフォルトの名無しさん
08/09/01 23:09:04
>>915
そんな数十行にもわたって書くことじゃないと思うけど、お前が噂のニートだろ?それに友達も一人もいない自宅警備員で、実際は、プログラムも作ったことない無能だろww
925:デフォルトの名無しさん
08/09/01 23:15:03
おー、こわい、こわいw
926:デフォルトの名無しさん
08/09/01 23:17:44
> 893
ひとまず、標準入力の件に関しては
java ReaderClass < data.txt
といったデータの与え方をした場合の事なのではないかと理解しました。
確かに、この場合には間違いなく ready() の使い所と思います。
この理解は間違っているでしょうか?
927:デフォルトの名無しさん
08/09/01 23:18:52
>>915の性格はキモイ説明サイトと同類だな。
もう、そういうサイトはいっぱいあるし、一見丁寧に説明しているようでどうでもいいところが長いだけだし、その程度の説明じゃ人は来ないだろうけどww
たとえば、x=1; new StringBuffer(x)とかだと、その説明の効率的の指摘からすれば、逆に非効率になるんじゃないの?
知ったかぶっりの雑学知識を披露したのは、わからないでもないんだけどねぇ・・・それじゃ文系のITジャーナリストと同じムジナだな・・・
928:デフォルトの名無しさん
08/09/01 23:23:01
文系といえば、確かにALL ABOUTの記事かいてるのはキモイ奴の多いよな。
「どこにも就職できなかったけど、All Aboutで拾ってもらいました!!」て感じのオーラが強いって言うか…
早稲田みたいなところの心理学科卒業で、All Aboutで「アロマがどうとかは心理的に~」とか専門術語を使って妄想記事かいてるのは吹いたww
>>915は結局それと同じムジナ。もう無理しないで死んでいいよ。
929:デフォルトの名無しさん
08/09/01 23:24:08
>>919
!
930:デフォルトの名無しさん
08/09/01 23:25:14
>>929それはboolean
931:デフォルトの名無しさん
08/09/01 23:29:51
妄想ならせめて旧帝大レベルじゃないとだめだろ。といっても、この前の東工大の学生は、左手腕に刺青みたいな模様をさらけ出してて、危ないやっちゃなと思ったけど、東工大は旧帝レベルだから少しは聞いてやったw
その話の真意よりも、たぶん自宅警備員候補だろうし、人生苦労する奴なんだろうなと思った。
932:デフォルトの名無しさん
08/09/01 23:30:17
>>926
そんな場合だからといってready()を使う必要なんてないよ。
10年ぐらいJava触ってて一度もready()を使ったことないけど、「入力が
なければ他の処理をする」という感じの疑似マルチスレッドぐらいしか
用途が思い付かない。で、そういうときは素直にマルチスレッドにする。
933:デフォルトの名無しさん
08/09/01 23:32:10
雑談したいなら他行け。
>>926
そうか?
標準入力を使うのは、その元が手入力だろうがファイルだろうがttyだろうがとにかく
何かが送られてくるのを受けたいだけだからだろう。
ファイルからだから ready を使うとか考えるのは違うんじゃないか。
934:デフォルトの名無しさん
08/09/01 23:35:41
つまり、>>915の説明はString/StringBufferの違いを本質的に指摘してないってことですね。実はそんな風に思ってましたがスッキリしました!
935:デフォルトの名無しさん
08/09/01 23:39:39
文系のITジャーナリストってのは、堀江豚と友達だったメガネで蝶ネクタイの30代ぐらいでキモイ奴か?
あいつは正に素早く死んで欲しい。いつもおれは、寝る前には必ず神棚で手を合わせて「早く死んでくれって」祈ってるぐらいだし。
936:デフォルトの名無しさん
08/09/01 23:41:15
それそろすれ違い
937:デフォルトの名無しさん
08/09/01 23:55:54
>932, 933
リダイレクトで渡せば EOF が取れないだろうから ready() の出番・・・と思ったのですが、書き込んでから試したらきちんと EOF になりました(阿呆です)
何か根本的に道を間違えているようです。
標準入力 + ready() というキーワードにこだわり過ぎているのでしょうか。
(その辺りを離れて単純に ready() の使い道を考えるのであれば、932 さんの仰るような nio っぽい使い方が一番の使い所であるような気がします。)
938:デフォルトの名無しさん
08/09/02 00:03:55
Stringをだな。阿呆みたいに+=で連結しまくってるコードがあったんだ。
あんまりにもあんまりだと思って、StringBufferで書き換えてみたんだ。
でもベンチマークを取ってみると、1msも変わらなくてだな。
そのメソッドのほんの数行、DBをアクセスしてる部分が、処理時間の99%
以上を持っていってたんだ……。
939:デフォルトの名無しさん
08/09/02 00:15:58
つまりStringBufferの利用価値は自己満足が大半ってことですね?
940:デフォルトの名無しさん
08/09/02 00:18:38
それで結局StringとStringBufferの違いは何?
941:デフォルトの名無しさん
08/09/02 00:19:36
Bufferって付いてるか付いてないか
942:デフォルトの名無しさん
08/09/02 00:20:07
確かによほど下手なことせん限り大差ないよな。でも演算途中でnew,new,new....ってのは気持ち悪い・・・
943:デフォルトの名無しさん
08/09/02 00:22:33
もう夏は終わったんだぜ?
944:デフォルトの名無しさん
08/09/02 00:23:20
でたでたでた。
945:デフォルトの名無しさん
08/09/02 00:23:47
ちなみにStringBufferとStringBuilderとかHashTableとHashMapとかだと
実際の所どの程度速度に影響するもの?
946:デフォルトの名無しさん
08/09/02 00:33:23
>>916
夏の終わりの駆け込みかと思ってたけど、オマエ、本気なんじゃないのか?
947:デフォルトの名無しさん
08/09/02 00:34:48
>>926
間違ってるな。
948:デフォルトの名無しさん
08/09/02 00:36:48
>>945
そいつらへのアクセスが処理の多くを占めてたら、それなりに効いてくるんじゃないか?
特にマルチコア/マルチCPUだと、synchronizedの部分でメモリの同期化が行われるから、それなりに馬鹿にならないコストがかかるような気がする。
とは言え、Java7あたりだと、JITコンパイラが不要なロックを省略するような最適化をぶちかましてくれるらしいからな……。
949:デフォルトの名無しさん
08/09/02 00:36:50
>>945
それは自分でやってみれば分かる事じゃん・・・
950:デフォルトの名無しさん
08/09/02 01:19:11
String:不変オブジェクト
StringBuffer:可変オブジェクト
っていう教科書にありそうなのではどうだw
951:デフォルトの名無しさん
08/09/02 03:03:11
>>945
今となっては多分そんなには変わらない。
952:デフォルトの名無しさん
08/09/02 03:14:15
まだやってんのか。違いは、効率じゃないんだよね。
953:デフォルトの名無しさん
08/09/02 03:27:17
ぼくらはreadyなんかなくても幸せ!
954:デフォルトの名無しさん
08/09/02 09:35:52
RandomAccessFileは、ソースを見てもnativeばかりですが、
実際(実装上)のところ多少はバッファがきいているから、BufferedInputStreamと同じように考えてよいのでしょうか。
他に気になるところはありますか?
955:デフォルトの名無しさん
08/09/02 09:39:19
EclipseってJavaでできてるみたいですが
Eclipseはexeにするのに何使ってるんですかね?
956:デフォルトの名無しさん
08/09/02 10:48:08
>>954
どうしてバッファされていると期待できるのかが理解できない。
ソースは見てないけど、バッファされないと思うぞ。バッファリングと
ランダムアクセスは相性悪いから。
957:デフォルトの名無しさん
08/09/02 10:53:37
いや、逆にバッファされていないと考える方がおかしいんだけど…
問題はバッファされているか・いないかじゃなくて、実用上問題ないかどうかだと思うが?
それと、ランダムアクセスとバッファが相性悪いのはどの辺りに根拠があるの?
958:デフォルトの名無しさん
08/09/02 11:07:42
相性とかそういうレベルの話でVMが作られてたら笑えるw
959:デフォルトの名無しさん
08/09/02 11:09:37
いつも通り>>956の思い込みが根拠じゃね?
960:デフォルトの名無しさん
08/09/02 11:17:54
>>958
そろそろ死んだ方がいいんじゃないか?人生疲れただろ。
961:デフォルトの名無しさん
08/09/02 11:21:53
そうだよな…なんで俺は生きてるんだろう…
962:デフォルトの名無しさん
08/09/02 13:09:56
ぼくらはEclipseなんかなくても幸せ!
963:デフォルトの名無しさん
08/09/02 16:01:00
ローカルでグラフィック描画する時は
Graphics gr = img.getGraphics();
gr.drawLine(x1,y1,x2,y2);
gr.dispose();
と毎回設定して廃棄しますが
グローバルで
Graphics gr = img.getGraphics();
としておいて、ローカルで
gr.drawLine(x1,y1,x2,y2);
だけで、ずっとgrを使いまわしてはだめですか?
964:デフォルトの名無しさん
08/09/02 16:23:10
いいよ
ずっと同じimgに描画するのなら
965:デフォルトの名無しさん
08/09/02 16:26:23
そうですか
966:デフォルトの名無しさん
08/09/02 17:39:54
ぼくはJCPADだよ!
みんな何使ってるの?
967:デフォルトの名無しさん
08/09/02 17:42:07
eclipse
968:デフォルトの名無しさん
08/09/02 17:43:36
今JCPADからEclipseに変えたとこ
閉じるのがいいね
969:デフォルトの名無しさん
08/09/02 23:22:31
30過ぎてJava覚えてJavaの資格とったらプログラマーの就職先見つかりまつか?
970:デフォルトの名無しさん
08/09/02 23:27:10
ちょっとの学歴あれば30ならまだ余裕で就けるよ
971:デフォルトの名無しさん
08/09/03 00:00:03
>>969
おでも三十で就職目指してます。
お互い頑張りましょう。
972:デフォルトの名無しさん
08/09/03 00:06:21
2つの別のクラスで同じ値を共有したいと思っています
ClassA、ClassBはループさせていて常に結果を出力しています。
ClassA{
if(hoge>0)
ClassF.setX(true);
else
ClassF.setX(false);
}
ClassB{
test.setEnable(ClassF.getX());
}
ClassF{
static boolean f;
static void setX(boolean bl){
f = bl;
}
static boolean getX(){
return f;
}
}
こんな感じのプログラムを書いたんですが、ClassBに反映されません
どこが間違っているんでしょうか?
それとも、別のクラスで同じ値を共有するのは無理なのでしょうか?
973:デフォルトの名無しさん
08/09/03 00:19:08
もうちょっと意図が分かるように書けよ。
ClassBに反映されないってどういう意味だ?
test.SetEnabledで思った値が取れてないってことか?
こんな擬似コードじゃ分からんけど、
もしループとやらが複数スレッドで同時に回し続けてるって意味なら、
ClassF.fへのアクセスを同期化する必要がある。
volatileにするかメソッドにsynchronizedつける。
974:デフォルトの名無しさん
08/09/03 00:19:34
>>972
別スレッドならsynchronizedかvolatile必須だぞ。
要素が1個かつJava5.0以上なら、AtomicBoolean等でもいい。
975:デフォルトの名無しさん
08/09/03 00:24:53
大量のUDPパケットを受信して、処理したいんですが、
どうしても、幾つかのパケットを取りこぼします。
何か、効率良く処理できる方法はありませんか?
976:デフォルトの名無しさん
08/09/03 00:32:18
>>973-974
ありがとうございます。
volatile static boolean f;
で望み度通りの結果を出すことができました。
977:デフォルトの名無しさん
08/09/03 00:37:50
>>975
どーやってんだ
978:デフォルトの名無しさん
08/09/03 00:44:18
>>976
変数が1個ならそれでいいけど、複数個ある場合はちゃんと同期取らないと変更途中のデータが読み出される可能性があるぞ。
詳しくは、マルチスレッドプログラミングに関する本を読んどけ。
979:デフォルトの名無しさん
08/09/03 00:46:00
>>975
UDPならパケットが取れないことがあるのは前提じゃないのか
980:975
08/09/03 00:46:50
DatagramSocketを使って、普通にポートを開いて受信しています。
981:デフォルトの名無しさん
08/09/03 01:26:19
>>979
答えは、UDPを使わないってことだな・・・
982:デフォルトの名無しさん
08/09/03 01:56:38
>>980
効率良くポートを開いて効率良く受信しろ
983:デフォルトの名無しさん
08/09/03 02:23:25
動的なキャストはどうやるんでしょうか?
windows95/98のプラットフォーム向けのアプリなんでjdk1.2相当なんですが。
よろしくお願いします。
984:デフォルトの名無しさん
08/09/03 02:26:08
動的キャストは、
Object obj;
...
val=(???)obj
ですが、???がコンパイル時未定の時のキャストです。
985:デフォルトの名無しさん
08/09/03 03:03:37
で、それに何の意味があるの?
???が未定なのにキャストした後でどうやって使うわけ?
986:デフォルトの名無しさん
08/09/03 03:15:12
>>984
valの型にキャスト
987:デフォルトの名無しさん
08/09/03 03:34:55
jdk1.5にある、val.getClass().cast(obj)
といった方が早いですね。これを1.2でやるにはどういうコードになるんでしょうか。
988:デフォルトの名無しさん
08/09/03 03:46:03
最近プログラムを勉強しはじめてわからないことだらけなのですが
キャストとパースの違いがよくわかりません
どなたか教えてください
989:デフォルトの名無しさん
08/09/03 04:35:02
>>987
>>985 >>986 は無視かい・・・
Class#cast() は
>public T cast(Object obj) {
>if (obj != null && !isInstance(obj))
>throw new ClassCastException();
>return (T) obj;
>}
となってるから generic が無いと無理なんだと思っとけ。
それよりもこれを使うようなのは相当面相なプログラムだと思うが、
これを使わないですむようにするほうが後々の為になると思うぞ。
990:デフォルトの名無しさん
08/09/03 04:49:15
無視というより、val=val.getClass().cast(obj) 程度で分かりませんでしたか。
使わないで済むように方法を探したんですけど、後々のためというより、ももともとターゲットが古くてこれしかないので聞いてるんですが?
知らないなら無理に御答えにならなくて結構ですけど、あなたはだいぶ妄想好きなんですねw
他に良い施策はありませんか?
991:デフォルトの名無しさん
08/09/03 04:59:34
>>984
val=(???)objのあと、valをどう使うつもりなの?
型が決まっていなければvalのメソッドとかを呼び出すコードもvalを他のクラスに渡すコードも書けないんじゃない?
というかval自体の型はval=(???)objの前でどう宣言しているの?
objになりうるクラス共通にインタフェースを実装させて、そのインタフェースにキャストするとか、
全体のクラス設計を見直した方がいいと思う。
992:デフォルトの名無しさん
08/09/03 05:01:45
単なるキチガイだったのか……
993:デフォルトの名無しさん
08/09/03 05:03:36
>>990
お前の問題だから自分で捜せ
そんな態度じゃまともな人のレスも付かないよ
994:デフォルトの名無しさん
08/09/03 05:07:05
そう思うんだけど、このスレの態度の方が酷くない。正しく真正糞スレだと思うが?
995:デフォルトの名無しさん
08/09/03 05:09:42
次スレ?
996:デフォルトの名無しさん
08/09/03 05:13:02
>>991
あなたは、答えらず、それにたいした能力もないのに、そんなに人の庭が好きなんですか?
その設計とやらを知って、あなたは手伝ってくれるんですかねw
一つ忠告しておけば、首突っ込むのは程ほどにした方がいいですよ。
997:デフォルトの名無しさん
08/09/03 05:16:24
>>998が>>988に答えてやって>>999は次スレ立てて誘導>>1000は俺が踏む
998:デフォルトの名無しさん
08/09/03 06:02:25
ジェネリクスは静的処理...
コンパイル時に決定できない型は、キャストするのも代入するのも不可能也。
パース...parse...castに似ている部分もあるのか...
【初心者】Java質問・相談スレッド119【歓迎】
スレリンク(tech板)
999:デフォルトの名無しさん
08/09/03 07:51:27
999
1000:デフォルトの名無しさん
08/09/03 07:53:53
1000get!
1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。