【初心者】Java質問・相談スレッド118【歓迎】at TECH
 【初心者】Java質問・相談スレッド118【歓迎】 - 暇つぶし2ch1:デフォルトの名無しさん
08/08/10 18:21:51
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    URLリンク(pc11.2ch.net)
Webプログラミング URLリンク(pc11.2ch.net)
をご利用下さい。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 URLリンク(www.wikiroom.com)
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」

前スレッド
【初心者】Java質問・相談スレッド116【歓迎】
スレリンク(tech板)
次スレは>>990あたりで。

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
URLリンク(www.wikiroom.com)


2:デフォルトの名無しさん
08/08/10 18:22:34
**** 関連スレッド案内 ****
■ AWT と Swing は --
Java低速GUI Swing 7
スレリンク(tech板)l50
■ SWT は --
Java 高速GUI SWT 3
スレリンク(tech板)l50

■ NTT DoCoMo の iモード携帯電話用 Java (iアプリ) は --
iモード携帯電話用Java(iアプリ) Part18
スレリンク(tech板)l50
■ DoCoMo 以外は --
CLDC+MIDP+携帯電話用Javaスレッド part 8
スレリンク(tech板)l50

■ 課題・宿題は --
★★ Java の宿題ここで答えます Part 65 ★★
スレリンク(tech板)l50

**** 開発環境が必要の場合は ****
■ J2SE 1.4.0
URLリンク(sdc.sun.co.jp)
■ J2SE 5.0 (1.5.0)
URLリンク(java.sun.com)
■ Java SE 6
URLリンク(java.sun.com)

**** 実行環境だけが必要の場合は ****
■ Java ソフトウェアのダウンロード
URLリンク(www.java.com)


3:デフォルトの名無しさん
08/08/10 18:23:11
すまんスレタイ微妙に失敗しちまった

4:デフォルトの名無しさん
08/08/10 18:25:29
あーしかもテンプレの前スレの所も変えてねえ
マジでゴメン

5:デフォルトの名無しさん
08/08/10 18:57:34


同期に失敗したか・・・・・

6:デフォルトの名無しさん
08/08/11 02:00:42
プロパティファイルについての質問です。

プロパティファイルを読み込んでくれるファイル位置と優先順序はどうなっているんでしょうか?

warパッケージやearパッケージの際にパッケージにプロパティファイルを含めずあとで入れ替えられるようにするにはどうすればいいんでしょうか


7:デフォルトの名無しさん
08/08/11 07:17:12
1. 入れ替えてbuildする
2. 入れ替える必要があるならば最初から外部ファイルにする

8:デフォルトの名無しさん
08/08/11 10:23:54
javaで積分するにはどうやってやるんですか?

9:デフォルトの名無しさん
08/08/11 10:36:14
親のクラスであるメソッドをsynchronizedしていても、そのクラスを拡張したクラスでオーバーライドしてsynchronizedしていなければ同期化されないのでしょうか?
class Parent {
public synchronized void method(){
}
}
class Child extends Parent{
public void method(){
// ここが同期されるか
}
}

10:デフォルトの名無しさん
08/08/11 10:37:24
自分で試したら?

11:デフォルトの名無しさん
08/08/11 11:14:25
2つのabstractクラスがあります。ClassAとListAとします。
ListAは以下のようになっています。
public abstract ListA<E extends ClassA> implements List<E> { ... }
ClassAにはそのクラスが扱うデータの名前を返すabstractメソッドがあります。
public abstract String getObjectName();
このメソッドが返す値は静的な値ですがstaticメソッドはabstractに出来ないので、
普通のクラスメソッドになっています。
public class ClassB extends ClassA {
...
public String getObjectName () { return "obj b"; }
}
ClassAとListAの具象クラスは常にペアで使われます。
public class ListB extends ListA<ClassB> { ... }

ここで質問なんですが、ListAの内部でもClassAのgetObjectName()で返される値を
使いたいのですが、今はListAでも同じ名前のabstractメソッドgetObjectNameを定義し、
ListBで全く同じ値を返すように実装しています。
public class ListB extends ListA<ClassB> {
....
public String getObjectName () { return "obj b"; }
}
同じメソッドを2箇所で定義しなきゃいけないのがなんとなく気持ち悪いです。
誰かもっと綺麗なやり方を教えてくれませんか?

12:デフォルトの名無しさん
08/08/11 11:22:53
IOExceptionの例外が発生した場合、getMessageでエラーの内容を
知ることができるわけですが、これをエラーコードという形で
取得することはできないでしょうか。
やりたいことは、xxxの例外だったら、zzzの作業を実行したいという感じです。

13:デフォルトの名無しさん
08/08/11 11:31:00
>>6
クラスパスの順で探すから、クラスパスを何とかすれば何とかなるんじゃないかね。

>>12
IOExceptionのサブクラスが定義してあるものじゃないと区別できないと思う。


14:デフォルトの名無しさん
08/08/11 12:06:50
>>11
たかだか文字列の取得なら、リストも中身も、継承つかわずに、
objectTypeをフィールドにして、基底クラス(Aのほう)が持つべき。
(振る舞いの違いがそこだけなら、完全に無駄な継承)

その際、リストと中身が類似じフィールドを持つのは、
要件によっては仕方ない。
フィールドの決定(生成時or登録時)がバラバラにならないように留意する。

階層がもっと増えて、リストなのか、中身なのかを意識せずに
アクセスしたいなら、getObjectName()をインタフェとして切り出す。
(コンポジットパターン。実装が簡潔になるわけではない)

>>12
IOEが出た段階で遡って区別するのは、だいたい無理じゃね?

15:11
08/08/11 12:46:46
>>14
基底クラスでprotected String objectName; と定義しても、
public class ClassB extends ClassA {
public String getObjectName () { return "obj b"; }
}
public class ListB extends ListA<ClassB> {
public String getObjectName () { return "obj b"; }
}

public class ClassB extends ClassA {
public ClassB () { objectName = "obj b"; }
}
public class ListB extends ListA<ClassB> {
public ListB () { objectName = "obj b"; }
}
になるだけで、大した違いはないように思えます。

振る舞いの違いはそれ以外にも沢山あるので継承は必須です。

> その際、リストと中身が類似じフィールドを持つのは、
> 要件によっては仕方ない。

が答えって事ですかね。

16:デフォルトの名無しさん
08/08/11 13:54:49
JAVAを初めて勉強するのにどんな本があるでしょうか?
定番というか一般的に人気のある本などを教えて頂けませんか?
レベルや用途別に分けて貰えると尚助かります。

17:デフォルトの名無しさん
08/08/11 14:08:23
***Javaのオススメ入門書*** 『創るJava』 3.0
スレリンク(tech板)

18:デフォルトの名無しさん
08/08/11 14:36:56
>>16
ホームページは簡潔にまとまってるから十分だし、本は要らないじゃないの。

19:デフォルトの名無しさん
08/08/11 14:45:12
ファイルの終端に到達するまでデータを読み込むループを
書いているのですが、java.io.EOFExceptionでループを抜けてしまいます。
読み込みに使っているのは、ObjectInputStreamのreadObjectで、
この戻り値がnullであるときにループを抜けたいのですが、
先の例外が出て、希望どおりになりません。
どうしたらよいでしょうか。

20:デフォルトの名無しさん
08/08/11 14:50:48
writeObjectでnullを書き込んでいれば、readObjectでnullが戻ります
そうでなければnullは戻りません

21:デフォルトの名無しさん
08/08/11 15:10:04
確かに充実してるし、ホームページでいいんじぇね?

22:デフォルトの名無しさん
08/08/11 15:10:26
>>20
writeObjectのnull書き込みが、終了の目印になっているようですね。
無事うまくいきました。ありがとうございます。

23:デフォルトの名無しさん
08/08/11 15:38:28
>>11
getObjectNameという名前をつけていながら実体はgetSubClassNameなんだな。
Listのほうはjavaのジェネリックはerasureだからうまい方法はないね。
ジェネリックではなく実際の型かObjectが必要になる。
多態性は魅力的だろうけどセオリーとは反対に、
クラスの属性で分類してcase文並べるほうがシンプルになるケースもあるから
ある手法で手詰まりなら別の手段をあたってみるのもいいと思うよ。

24:14
08/08/11 16:26:09
>>15
んっと、提示されたAとBのgetメソッドの違いは、
「振る舞いの違い(=継承で書き換えるべきもの)」
ではないということを言いたかった。
プロパティとして持たせてあげれば、Bのgetメソッドはいらない。

そのプロパティを設定するのは、静的ならコンストラクタ内になる。
まあ、一番キミが聞きたいとこからはずれてるので、気にしなくていいが、

class A {
private String ob="obj a"; //デフォルト

public String getObjectName(){ //ゲッタ
return ob;
}

protected void setObjectName(String name){//セッタ
this.ob=name;
} }


class B extend A{

B(){
super();
setObjectName("obj b"); //静的ならここ書く。
} }

今回はどうせBを作る需要があるということなので、こんな感じ。
ただgetObjectName()の戻りを変えたいだけなら、setObjectNameを
公開するか、コンストラクタ引数にする。それだけのためのクラスは不要。

25:11
08/08/11 18:29:07
>>23,24
解説どうも。
なぜabstractメソッドにしたかというと、子クラスを実装する開発者にobjectNameを
セットするのを強制させたかったからです。
もちろんabstractメソッドを使わずに、親クラスでobjectNameをチェックしてnullだったら
RuntimeExceptionを投げるとかでもいいんですが。

Listの件、うまい方法はないってのは了解です。

26:デフォルトの名無しさん
08/08/11 20:36:38
ファイル名が適切でない(例えばWindowsでは\など)かどうか判断するにはどうすればよいでしょう。
自分で実装するしかないのでしょうか?

27:デフォルトの名無しさん
08/08/11 21:23:42
JSFの条件分岐処理がうまく行きません。

URLリンク(localhost:8080)から、
テキストボックスに、"root"と入力して、ボタンを押したら、
result.jspで、"こんにちわ、rootさん!"と表示されて、
テキストボックスに、"root"以外の文字列を入力して、ボタンを押したら、
index.jspで、"文字を入力してください。"と表示したいです。

・構成は、下記配置です。
/test/build/classes/jp/co/pkg/Interface.class
/test/build/classes/jp/co/pkg/Test.class
/test/WebContent/WEB-INF/lib/jsf-api.jar
/test/WebContent/WEB-INF/lib/jsf-impl.jar
/test/WebContent/WEB-INF/lib/jstl-1.2.jar
/test/WebContent/WEB-INF/faces-config.xml
/test/WebContent/WEB-INF/web.xml
/test/WebContent/WEB-INF/index.jsp
/test/WebContent/WEB-INF/result.jsp


28:デフォルトの名無しさん
08/08/11 21:23:52
だめな文字でファイル作成しようとしたときのstacktrace確認するとFileOutputStream#open(NativeMethod)でエラー起きてるから、特にそういう機能はないみたいですね。
すみません。自己解決です。

29:デフォルトの名無しさん
08/08/11 21:24:19
<%--index.jsp--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="URLリンク(java.sun.com)" prefix="h"%>
<%@ taglib uri="URLリンク(java.sun.com)" prefix="f"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "URLリンク(www.w3.org)">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<div>
<f:view>
<h:form>
<h:outputText value="お名前は?" binding="#{Test.text}" /><br />
<h:inputText binding="#{Test.field}" /><br />
<h:commandButton binding="#{Test.button}" action="#{Test.getButton_action}" />
</h:form>
</f:view>
</div>
</body>
</html>

30:デフォルトの名無しさん
08/08/11 21:24:53
<%--result.jsp--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="URLリンク(java.sun.com)" prefix="h"%>
<%@ taglib uri="URLリンク(java.sun.com)" prefix="f"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "URLリンク(www.w3.org)">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<div>
<f:view>
<h:form>
<h:outputText value="#{Test.text}" />
</h:form>
</f:view>
</div>
</body>
</html>


31:デフォルトの名無しさん
08/08/11 21:27:13
//Test.java
package jp.co.pkg;
import javax.faces.component.html.HtmlCommandButton;
import javax.faces.component.html.HtmlOutputText;
import javax.faces.component.html.HtmlInputText;
import jp.co.pkg.Interface;
public class Test implements Interface {
private HtmlCommandButton button;
private HtmlOutputText text;
private HtmlInputText field;
public void setButton(HtmlCommandButton button){
button.setValue(login_button);
this.button = button;
}
public void setText(HtmlOutputText text){ this.text = text; }
public void setField(HtmlInputText field){ this.field = field; }
public HtmlCommandButton getButton(){ return this.button; }
public HtmlOutputText getText(){ return this.text; }
public HtmlInputText getField(){ return this.field; }
public String getButton_action(){
String str = (String)this.field.getValue();
if(str.equals("root")){
text.setValue("こんにちわ、" + str + "さん!");
return "true";
}else{
text.setValue("文字を入力してください。");
return "false";
}
}
}

32:デフォルトの名無しさん
08/08/11 21:27:47
//Interface.java
package jp.co.pkg;

public interface Interface {
public static final String login_button = "ログイン";
}



33:デフォルトの名無しさん
08/08/11 21:31:05
<!--faces-config.xml-->
<?xml version="1.0" encoding="UTF-8"?>

<faces-config
xmlns="URLリンク(java.sun.com)"
xmlns:xsi="URLリンク(www.w3.org)"
xsi:schemaLocation="URLリンク(java.sun.com) URLリンク(java.sun.com)"
version="1.2">
<managed-bean>
<managed-bean-name>Test</managed-bean-name>
<managed-bean-class>jp.co.root.Test</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<navigation-rule>
<from-view-id>./index.jsp</from-view-id>
<navigation-case>
<from-outcome>true</from-outcome>
<to-view-id>./result.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>false</from-outcome>
<to-view-id>./index.jsp</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>


34:デフォルトの名無しさん
08/08/11 21:32:17
<!--web.xml-->
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="URLリンク(www.w3.org)"
xmlns="URLリンク(java.sun.com)"
xmlns:web="URLリンク(java.sun.com)"
xsi:schemaLocation="URLリンク(java.sun.com) URLリンク(java.sun.com)"
id="WebApp_ID" version="2.5">
<display-name>test</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
</web-app>


35:デフォルトの名無しさん
08/08/11 21:34:04
以上です。よろしくおねがいします。

36:デフォルトの名無しさん
08/08/11 23:06:23
うpろだ使えカス

37:デフォルトの名無しさん
08/08/11 23:07:08
JPanel部分に、C++のソフトがはきだしたグラフを貼り付けて表示する、
ということはできるでしょうか?

グラフをX-Window上に描画・表示するソフトはroot(C++ソース)というものです。
URLリンク(www-jlc.kek.jp)

38:デフォルトの名無しさん
08/08/11 23:56:59
すいません
入力が数字の場合と文字の場合とで処理を分けたいのですがそういう関数ってありますか?

39:デフォルトの名無しさん
08/08/12 00:07:32
match("\\d*")

40:デフォルトの名無しさん
08/08/12 00:12:51
>>39
ありがとうございます

41:デフォルトの名無しさん
08/08/12 00:59:00
awt が重量コンポーネントに対して
swing が軽量コンポーネントと呼ばれますが
swing は awt を継承している(包括している)と思うのですが・・・
何が軽量なのでしょうか

42:デフォルトの名無しさん
08/08/12 01:27:01
ネイティブコードが少ない

43:デフォルトの名無しさん
08/08/12 01:52:49
>>41
Swingの解説を読めばまっさきに書いてあると思うんだが……。


44:デフォルトの名無しさん
08/08/12 02:13:46
OSのリソースを使わないという意味で軽量だな
処理の重さや、継承によるコード量とかじゃない
描画はネイティブじゃないぶんだけ遅い

45:デフォルトの名無しさん
08/08/12 02:18:02
描画が速いとかいってる奴がいるけど、英語の解説をちゃんと読んだことあるか?


46:デフォルトの名無しさん
08/08/12 02:33:25
またその話っすか

47:デフォルトの名無しさん
08/08/12 02:42:22
>>44
ほらほら、お呼びだぞww

48:デフォルトの名無しさん
08/08/12 09:23:38
javaで積分するにはどうやってやるんですか?

49:デフォルトの名無しさん
08/08/12 09:40:05
それよりも微分はどうやるんでしょうか?

50:デフォルトの名無しさん
08/08/12 09:42:33
夏厨ばっかだなw

51:デフォルトの名無しさん
08/08/12 10:07:20
おまえに聞いてない

52:デフォルトの名無しさん
08/08/12 10:34:47
appletに関する質問なのですが

・JDK1.2以降のAPIが使えない(java.util.jarやjavax.*が使えない)
・applet格納jarとは別の.auファイルをまとめたjarなりzipなりがある
・アーカイブは後付で読み込む(起動後に読み込むものが決まる)

という状態で、外部アーカイブ内の.auファイルから音声オブジェクトを作成する方法ってありますでしょうか?
自分で考えた限りでは2通りのアプローチかなと思ったのですが他に何かいい方法があるかなと思いまして…

1)読み込んだアーカイブをclasspathに追加する
classpathに追加できればApplet#getAudioClip(URL)で読み込めるが、追加方法がわからない
(System.setProperty()でjava.class.pathをsetしても意味がないらしい)

2)sun.audio.AudioStreamを使う
ZipInputStream→ZipEntry→byte[]→ByteArrayInputStream→AudioStreamで
読み込み&再生には成功したが非公開APIなので互換性の心配がある

53:デフォルトの名無しさん
08/08/12 11:01:01
>>47
44は「遅い」って書いてあるように俺には読めるんだが

54:デフォルトの名無しさん
08/08/12 11:42:20
以下のパディングで、全角を半角2文字分として処理させる手段はあるでしょうか。

System.out.format("%3s_", "あ");
結果: あ_ ※スペースが前に2つ入ってしまう。これを1つにしたい。

55:デフォルトの名無しさん
08/08/12 12:11:29 BE:104062526-2BP(2)
>>48-49
数値微分、数値積分だったらできる。
差分法、区分求積法、リーマン積分、台形公式、シンプソンの三分の一則、ロンバーグ積分でググれ。
というか数値計算や数値解析の本読め。
ただし連続関数の微分、積分は一筋縄ではいかない。
正規表現が必要になってくる。


56:デフォルトの名無しさん
08/08/12 12:32:17
正規表現はいらないだろw
なにいってんだこいつは。

57:デフォルトの名無しさん
08/08/12 13:00:45
>>55
そこに書いてないようだけど、数値微分はどうやるの?

58:デフォルトの名無しさん
08/08/12 13:26:14
JavaMailで質問です。
プログラム内でPDFを作成して添付ファイルとして送りたいのですが、
作成したPDFをファイルシステムに保存したくありません。

今はこんな感じでやってます。
//PDFファイルを一時ファイルとして書き出し
File tmpFile = File.createTempFile("foo", ".pdf");
//PDFをOutputStreamに書き出す独自クラス
report.renderPDF(new FileOutputStream(tmpFile));

MimeBodyPart attachedPart = new MimeBodyPart();
attachedPart.setFileName("filename.pdf");
attachedPart.setDataHandler(new DataHandler(new FileDataSource(tmpFile)));

File.createTempFile を使わずに添付ファイルを送るいい方法はありますか?

59:デフォルトの名無しさん
08/08/12 13:29:55
Thread.sleepとwaitって何が違うんですか?

60:デフォルトの名無しさん
08/08/12 13:35:25
waitはnotifyされたときに起きる

61:デフォルトの名無しさん
08/08/12 13:38:22
>>58
FileOutputStreamの代わりにByteArrayOutputStream使って
FileDataSourceの代わりにDataSourceの自前の実装を使えばいいんじゃない

62:デフォルトの名無しさん
08/08/12 13:53:35
main()の戻り値を返す方法はありませんか
Cならreturnで戻せるのですが・・・

63:58
08/08/12 13:55:46
>>61
ありがとうございます。やっぱり自前で何かやらないとダメですか…

64:デフォルトの名無しさん
08/08/12 14:12:11
>>62
System#exit(int)

65:デフォルトの名無しさん
08/08/12 14:15:48
>>64
thx

66:デフォルトの名無しさん
08/08/12 14:36:14
正規表現でパスワードをチェックしたいのですが、
半角数字、アルファベット大文字、小文字が混在していることを
条件にする方法がわかりません。


67:デフォルトの名無しさん
08/08/12 15:07:12
>>66
無理に正規表現にするのはどうかと思うが・・・これでどう
(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])

68:66
08/08/12 15:39:38
私も最初にその方法で確認したのですがだめでした

String str = "Hoge0123";
System.out.println(str.matches("(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])"));

falseになります。

69:デフォルトの名無しさん
08/08/12 15:56:47
定数の扱い方について教えてください。
クラスの中にprivate finalをたくさん定義するのはよい方法なのでしょか。
C言語では、ヘッダーファイルに定数をまとめたりしますが、
javaではどうなのでしょうか。

70:デフォルトの名無しさん
08/08/12 16:00:23
>>68
それだけだとゼロ文字にしかマッチしない
(?= ) は1文字も食わないから

71:デフォルトの名無しさん
08/08/12 16:02:20
>>69
よい方法
少なくともコード中にマジックナンバを書くよりは

用途によってはenumを使え

72:デフォルトの名無しさん
08/08/12 16:19:23
>>71
レスありがとうございます。
ただ、あまりにも定数が増えてくるといいますか、
どこまで定数として定義したらよいかの判断が難しいです。
たとえば、"ファイルの読み込みに失敗しました。"という文字列が
コード上で一回しか出てこないのなら、定数にする必要もないのかなと思います。


73:デフォルトの名無しさん
08/08/12 16:28:58
>>72
文字列は国際化を考えてResourceBundleに入れるのが望ましい・・・けどまぁ面倒いよな
お好きにどうぞ

74:デフォルトの名無しさん
08/08/12 16:57:37
>>55
入門編の地雷じゃないヤツを教えて。

75:デフォルトの名無しさん
08/08/12 18:40:37
>>56
sin(x)をcos(x)に
log(x^2)を2x/x^2 = 2/x
と表示するにはなにかしら正規表現が必要

>>57
差分法と書いてあるだろう

>>74
地雷? 意味がわからない。
まずは数値計算の本を読め。
『Javaによるアルゴリズム事典』でも読め。

76:デフォルトの名無しさん
08/08/12 20:06:50
>>75
正規表現って何か知ってる?

77:デフォルトの名無しさん
08/08/12 21:44:16
せいきひょうげんだと……?

78:デフォルトの名無しさん
08/08/12 22:05:38
もしかしてノーマライズのこといってる?

79:デフォルトの名無しさん
08/08/12 22:06:50
ワロタww

80:デフォルトの名無しさん
08/08/12 22:07:22
Regular representationだろ

81:デフォルトの名無しさん
08/08/12 22:54:25
regular expressionだろ

82:デフォルトの名無しさん
08/08/13 00:35:19
>>75
どうせ独学でしょ。sin[x]をcos[x]にするとかいってて、全然分かってないようだしw

83:デフォルトの名無しさん
08/08/13 00:38:50
>>78
いや? 約分という正規化もしたいけどそれとは別に。
正確には文字列処理というべきだったか。
正規表現というから唐突過ぎたみたいだ。

だが合成関数など複雑な数式になると微分するときに正規表現も必要になるんじゃないのかって言いたかった。

84:デフォルトの名無しさん
08/08/13 00:40:33
>>82
何が? あと、それだと配列になるぞ。
数値微分だったら簡単にできるだろ。
それとは別の、連続関数の微分のことを言ってるんだが。


85:デフォルトの名無しさん
08/08/13 00:41:53
正規表現という用語は文字列のマッチング用パターンを指すのでややこしいから別の用語を使ってくださいお願いします

86:デフォルトの名無しさん
08/08/13 00:47:29
MatheticaだったかMATLABだったか忘れたけど

y = diff(sin(x))
と入力すると


y = cos(x)
と表示してくれる言語があった気がする

87:デフォルトの名無しさん
08/08/13 01:04:46
結局、ただの夏いやつだったんだよ・・・

88:デフォルトの名無しさん
08/08/13 01:08:25
>>83
SICPの Symbolic Differentiation みたいなのをやりたいということかな?

Schemeみたいに簡単にはいかないよ。自分で構文解析する必要がある。
構文解析してS式なり、構文木作ってしまえば、Schemeと大差は無いよ。

89:デフォルトの名無しさん
08/08/13 01:16:50
>>84
配列とか言ってるようだけど、独学だとしても最低限mathmaticaぐらいは使えるようになってくれ。
それとその数値微分だと、入力が10^-12なら出力は10^-6の半分程度の精度しかないんじゃないか?

90:デフォルトの名無しさん
08/08/13 01:19:57
>>89
javaスレだぞ・・・

91:デフォルトの名無しさん
08/08/13 01:23:00
数値計算はjavaでやるのが一番面倒がないね。ライブラリもそろってるし。
javaは、予約語だらけとかの他の複雑な言語に比べて簡単だからアルゴに集中できるけどね。

92:デフォルトの名無しさん
08/08/13 01:44:06
>>88-89
そういえばMATLABを思い出したよ
>>86
symbolic(x);
y = diff(sin(x),x)
と入力すると
y = cos(x)
になるやつだったかな。

SchemeとMathematicaは良く知らないがMATLABはよく触っていたから覚えている。
Javaで同じことができるライブラリをどこかで見つけたが有料だったので
諦めた記憶がある。どこのサイトだったかまでは覚えていない。

93:デフォルトの名無しさん
08/08/13 02:55:25
>>91
アルゴリズムをアルゴと略す奴は、MZユーザではないだろうな。
気持ち悪い略し方だ。アルクワリズミが草葉の陰で泣いてるぞ。

94:デフォルトの名無しさん
08/08/13 03:07:34
流れをきって質問です・・・
Java自体が始めてまだ数ヶ月なのですが、ウィンドウアプリケーションを初めて作ってみました。
そこで、たとえば3秒ごとにウィンドウに今の時間を更新して表示するプログラムを作りたいのですが、いままでならスレッドで
for(;;){
min=calender.get(Calendar.MINUTE);
System.out.println(min);
Thread.sleep(3000);
}
と書いたスレッドを実行させておけばよかったのですが、ウィンドウ型になるとどうしていいかわからなくなってしまいました・・・
説明が下手で申し訳ないですが、
「3秒ごとに今の時間を取得してそれをウィンドウに表示させる」
というプログラムを作りたいです

95:デフォルトの名無しさん
08/08/13 03:15:15
正規表現とか使ってシンボリックに微分をやったり数値計算するよりも、その結果を数学の自然表記にする方が難しいんだけどね。
積分や分数を教科書どおりにウインドに表示するとか。

96:デフォルトの名無しさん
08/08/13 03:25:44
>>93
アルコイズミとか出してきて、おまえのほうがキモイ

97:デフォルトの名無しさん
08/08/13 09:33:54
>>94
1.時刻表示ができる窓を作る。

2.時刻を更新するメソッドを書く。

3.2を定期的に呼ぶスレッドを書く。

4.3のスレッドの生成と実行を書く。


だいたいこんな感じ。

98:デフォルトの名無しさん
08/08/13 10:03:16
>>96
アルゴリズムの語源になった人だぞ < アルクワリズミ

99:デフォルトの名無しさん
08/08/13 10:15:49
すみません、>>52なのですが
アプローチがそもそも間違っているとかこういう質問はこのスレへ行くのがいいとか
そういった感じのことでもよいのでよろしくお願いします……

>>94
>>97さんの内容でいけると思いますが、表示をJTextBoxなどのswingコンポーネントでやる場合は
SwingUtilities.invokeLater()を使わないと表示処理が正しく行われないので注意してください。。
(swingコンポーネントの大半のメソッドは、イベントディスパッチスレッド以外から呼んではいけないという決まりがある)
URLリンク(homepage3.nifty.com)

100:デフォルトの名無しさん
08/08/13 10:44:55
>>95
texとか知らないのか

101:デフォルトの名無しさん
08/08/13 10:50:35
そのTeXという言語を作る仕事がものすごく難しい

102:デフォルトの名無しさん
08/08/13 10:58:59
>>101
その難しいは、個人の能力が低い場合だろ・・・

103:デフォルトの名無しさん
08/08/13 10:59:28
>>101
技術的に難しいという意味じゃねーじゃん

104:デフォルトの名無しさん
08/08/13 11:40:43
>>101
そりゃ言語を作るのは、並大抵の難易度じゃないだろう。
けど、そういう話?

105:デフォルトの名無しさん
08/08/13 11:46:01
5.0から追加されたイグゼキュタって、時間を戻すと止まりませんか?
指定した遅延後に実行されるだけだと思うのですが、
どうもIO周りでブロックされているような気がします。
これだとNTPで時間を戻された時とかに使えないような?

public class TestA implements Callable {
private ScheduledFuture<?> future;
private ScheduledThreadPoolExecutor pool = (ScheduledThreadPoolExecutor)Executors.newScheduledThreadPool(1);
public static void main(String[] argv) { new TestA().start(); }
public void start() { future = pool.schedule(this, 1, TimeUnit.MILLISECONDS); }
private void run_() {
System.out.println(sdf.format(new Date()) + ": running"); // !!!これがないと止まらないで動く
ScheduledFuture<?> future2 = pool.schedule(new Runnable() { // 再スケジュール用のタスクセット
public void run() {
if (future.isDone()) {
try {
future.get();
future = pool.schedule(TestA.this, 1, TimeUnit.MILLISECONDS); // ユーザタスクの再スケジューリング
} catch (InterruptedException e) { e.printStackTrace();
} catch (ExecutionException e) { e.printStackTrace(); }
}
}
}, 0, TimeUnit.MILLISECONDS);
}
public Object call() throws Exception {
run_();
return future;
}
}

106:デフォルトの名無しさん
08/08/13 12:59:59
>>97
レスありがとうございます。
その、表示する窓についてですが、時間を更新する3秒ごとに描画し直さなくてはならず、
g.drawString(時間)
も3秒ごとに実行させる必要があると思っています。このdrawStringもスレッドに組み込むのでしょうか?

質問が悪く、初歩的で申し訳ないです

107:デフォルトの名無しさん
08/08/13 13:02:33
>>104
そういう話だった
Yacc/flexで言語作っている奴のコードを見ていたら
くそやばかった記憶がある。あれは並大抵の努力じゃ実現できないものだと思った。

108:デフォルトの名無しさん
08/08/13 13:20:33
>>106
描画はpaintもしくはpaintComponentでする
スレッドは3秒ごとにrepaintを呼ぶ

109:デフォルトの名無しさん
08/08/13 13:42:27
>>102-104

ひまなんでしょww

110:デフォルトの名無しさん
08/08/13 13:51:43
>>107
努力してるのかどうかよりも、何がくそやばかったのか分からないんだけど

111:デフォルトの名無しさん
08/08/13 15:35:45
くそやばかったかどうかよりbison/flexでもyacc/lexでもない件
ていうかjavaスレなんだからどうせなら標準でjavaを吐くパーザジェネレータの話をしようぜ

112:デフォルトの名無しさん
08/08/13 17:06:24
質問です。
最近Javaをはじめたのですが
配列を今勉強していて、
ArrayListに突っ込み、それを拡張する方法はわかったのですが

例えば
int[] num_array = new int[5];
とかやった場合に
num_arrayの大きさ自体を変える事は出来ないのでしょうか?


113:デフォルトの名無しさん
08/08/13 17:07:49
できない
新しく大きな配列を作って中身を移すしかない

114:デフォルトの名無しさん
08/08/13 19:14:22
>>112
新規に大きな配列を作って中身をコピーする時に、
使っているのがJDK6以降ならjava.util.ArraysクラスにcopyOfというメソッドがあって、
num_array = java.util.Arrays.copyOf(num_array, 10); // サイズ10の配列を新たに作って中身をコピーしたものを返す
みたいにできるのでちょっと便利。
元のnum_array自体を拡張するのではなく、サイズが変更されたコピーを返すところに注意。
配列は固定長であることに変わりはないので。
JDK5以前なら配列の作成とコピーのコードを自分で書かないといけない。

115:デフォルトの名無しさん
08/08/13 19:41:06
>150
使い方が色々間違っているような気がする
あとstdはどこに変数宣言あるんだ?
future.get(); も激しくデットロックの香り

116:デフォルトの名無しさん
08/08/13 21:14:07
>>115
縮めてみた。
import java.util.*;
import java.util.concurrent.*;
import java.text.SimpleDateFormat;

public class TestA implements Callable<Object> {
private ScheduledFuture<?> future;
private ScheduledThreadPoolExecutor pool = (ScheduledThreadPoolExecutor)Executors.newScheduledThreadPool(1);
public static void main(String[] argv) {new TestA().start();}
public void start() {future = pool.schedule(this, 1, TimeUnit.MILLISECONDS);}
public Object call() throws Exception {
System.out.println(sdf.format(new Date()) + ": running");
ScheduledFuture<?> future2 = pool.schedule(this, 1, TimeUnit.MILLISECONDS);
return future;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss" , Locale.JAPAN);
}

遅延を0にすればとまらないのだから、デッドロックと言うことは無いだろう。
時刻に達したら制止が外れるようなので、
1,2秒さかのぼった程度なら、問題にならないだろうけど、
夏時間とかはどうなるだろ。

また、時計を巻き戻して、処理が止まってから、時計を戻してみた。
すると、1分間ほど経ってから処理が再開した。

117:デフォルトの名無しさん
08/08/13 23:45:02
ThreadGroupのactiveCount()でグループに属するスレッドの数が取得できないのですが
これは仕様ですか?

// スレッドグループツリーの作成
ThreadGroup g1 = new ThreadGroup("g1");
Thread t1 = new Thread(g1, "t1");
Thread t2 = new Thread(g1, "t2");
ThreadGroup g2 = new ThreadGroup(g1, "g2");
ThreadGroup g3 = new ThreadGroup(g1, "g3");
Thread t3 = new Thread(g2, "t3");
ThreadGroup g4 = new ThreadGroup(g2, "g4");
Thread t4 = new Thread(g4, "t4");

// g1スレッドグループに含まれるスレッドの数
System.out.println("g1.activeCount() = " + g1.activeCount());

上記のプログラムを実行すると
g1.activeCount() = 0
と表示されます。

参考書を見ると
g1.activeCount() = 4
と表示されるとなっています

ご教授お願いします

118:デフォルトの名無しさん
08/08/13 23:47:41
startしていないthreadはカウントされない

119:デフォルトの名無しさん
08/08/13 23:48:33
>>118
ありがとうございます

もう一度試してみます

120:デフォルトの名無しさん
08/08/14 00:07:48
宣伝しにきたよ。
■■みんなでサイトつくろうぜwwwwwwww■■

「お前ら一緒にサイト作ろうぜwwwww」
「2ちゃん越えるサイト作ろうぜww」

「仕事無いんだ・・・・・・」

「やろうぜ!」

「みんなでサイトつくろうぜwwwww」

URLリンク(gacco.o0o0.jp)
URLリンク(ex14.vip2ch.com)
今日トップ絵作ったんだぜ!
興味沸いたらきてください!

121:デフォルトの名無しさん
08/08/14 00:09:23
みんなでサイトつくろうぜwwwwwwwwww

みんなで本気でつくる気です。 がんばりましょう。
サイトのイメージはSNS×学校みたいな感じ。
サイトデザイン(案)
URLリンク(www36.atwiki.jp)
URLリンク(www36.atwiki.jp)
URLリンク(www.vipper.org)

技術を持ってる人はパー速へ!
URLリンク(ex14.vip2ch.com)

wiki:

vipでサイトつくろーぜ
URLリンク(www26.atwiki.jp)


詳細はwiki参照


122:デフォルトの名無しさん
08/08/14 00:15:41
宣伝しにきたよ。
■■みんなでサイトつくろうぜwwwwwwww■■

「お前ら一緒にサイト作ろうぜwwwww」
「2ちゃん越えるサイト作ろうぜww」

「仕事無いんだ・・・・・・」

「やろうぜ!」

「みんなでサイトつくろうぜwwwww」

URLリンク(gacco.o0o0.jp)
URLリンク(ex14.vip2ch.com)
今日トップ絵作ったんだぜ!
興味沸いたらきてください!

123:デフォルトの名無しさん
08/08/14 00:16:29
>>120
あれ。。俺がいる。
ホントすまなかった。

124:デフォルトの名無しさん
08/08/14 01:54:38
相変わらずキモイな
C#と同じくどんどん糞スレになってくれ

125:デフォルトの名無しさん
08/08/14 03:01:18
掲示板を作ってるのですが、書き込んだ日時としてデータベースに
Calendar#getTimeInMillis()で取れる値を入れて、
そのlong値を取得して何月何日何時何分何秒に書き込んだか表示したいのですが、
Calendar cal=Calendar.getInstance();
System.out.println(cal.get(Calendar.YEAR));
cal.setTimeInMillis(//データベースから取得したlong値);
System.out.println(cal.get(Calendar.YEAR));
で比較すると後者のprintlnで表示される値が何を入れても常に1970になります。
setTimeInMillisをAPIドキュメントで見ると
>Calendar の現在時刻を、指定された long 値から設定します。
と書いてあるのでこれで良いかと思ったのですが、これはどこを間違っているのでしょうか??

126:デフォルトの名無しさん
08/08/14 03:24:21
>>125
データベースから取得したlong値は正しい値で取得されている?
秒単位でなくてミリ秒単位だからだいたい 31500000000 より小さい値なら1970年になる。

127:デフォルトの名無しさん
08/08/14 03:39:42
アクセス修飾子について質問です。

protected:
 同一クラスのインスタンス、またはそのクラスを継承したクラスのインスタンスからアクセス可能。

なし(デフォルト):
 そのインスタンス、または同一パッケージに所属するクラスのインスタンスからアクセス可能。

となっていますが、メンバが「なし(デフォルト)」の場合には、異なるパッケージに存在するサブクラスの
インスタンスからは、アクセスすることができないのですか?

128:デフォルトの名無しさん
08/08/14 03:42:45
うん

129:デフォルトの名無しさん
08/08/14 03:48:49
では、アクセス就職子の序列が

public > なし(デフォルト) > protected > private

となっている参考書は間違いなのですか?

「protected」の場合にアクセスできるものに
「なし(デフォルト)」の場合にアクセスできないので。

130:デフォルトの名無しさん
08/08/14 03:49:10
>>127
protectedは同一パッケージ内のクラスからもアクセス可能。

131:デフォルトの名無しさん
08/08/14 03:50:59
protectedの説明が
> 同一クラスのインスタンス、またはそのクラスを継承したクラスのインスタンスからアクセス可能。
になっているのなら、その参考書の説明は間違い。

132:デフォルトの名無しさん
08/08/14 03:53:18
あー逆だ
public > protected >> なし(デフォルト) private
が正しい。
protectedの方が公開の範囲が広い。

133:デフォルトの名無しさん
08/08/14 03:58:09
public > protected >> なし(デフォルト) private
は、
public > protected > なし(デフォルト)> private
ね。だから、
> となっている参考書は間違いなのですか?
は間違いで正しい。
まとめると、
> となっていますが、メンバが「なし(デフォルト)」の場合には、異なるパッケージに存在するサブクラスの
> インスタンスからは、アクセスすることができないのですか?
は正しい。
> public > なし(デフォルト) > protected > private
> となっている参考書は間違いなのですか?
も正しい。つまり間違ってる。

134:デフォルトの名無しさん
08/08/14 04:13:16
>>130-133
了解です!
ありがとうございます!

135:デフォルトの名無しさん
08/08/14 04:22:01
そんな糞参考書は窓から投げておk

136:デフォルトの名無しさん
08/08/14 05:11:35
糞はおまえw

137:デフォルトの名無しさん
08/08/14 06:24:30
会話が成り立っていない

138:105
08/08/14 10:10:40
>>115
書き込みが入りきるよう縮めていたら消していました。
使い方おかしいですか?
やりたいのはその都度実行する遅延を計算しなおしたいのです。
ここでは止まるのを確認するのに1msで常にやってます。

>>116
printlnでIOがブロック?と書きましたが違ったようです。
↓のように、止まるのは遅延を待機しているのではないかと。
ただその遅延が指定したものでなく、
おっしゃるように戻した時間が経過して戻す以前の時間+遅延になると動くようです。
もしかしたら遅延を指定しているにも関わらず、
内部で時刻を取得し直して計算しているのかとも思うのですが。

スレッド [pool-1-thread-1] (中断中)
Unsafe.park(boolean, long) 行: 使用不可 [ネイティブ・メソッド]
LockSupport.parkNanos(long) 行: 使用不可
AbstractQueuedSynchronizer$ConditionObject.awaitNanos(long) 行: 使用不可
DelayQueue<E>.take() 行: 使用不可
ScheduledThreadPoolExecutor$DelayedWorkQueue.take() 行: 使用不可
ScheduledThreadPoolExecutor$DelayedWorkQueue.take() 行: 使用不可
ScheduledThreadPoolExecutor(ThreadPoolExecutor).getTask() 行: 使用不可
ThreadPoolExecutor$Worker.run() 行: 使用不可
Thread.run() 行: 使用不可


139:デフォルトの名無しさん
08/08/14 10:52:28
どなたか>>52(>>99)をお願いします…
何か質問の仕方マズかったでしょうか

140:デフォルトの名無しさん
08/08/14 12:35:08
やっぱ"Ruby"ですよ!

141:デフォルトの名無しさん
08/08/14 13:04:24
>>139
1.2以前でっていう限定がきつい。
古すぎてだれも答えられないと思う。

142:デフォルトの名無しさん
08/08/14 13:10:54
>>141
初心者の宿題出なければ、appletを作っているやつ自体いないのでは

143:デフォルトの名無しさん
08/08/14 13:43:41
■■みんなでサイトつくろうぜwwwwwwwwwwwwwwww■■
「お前ら一緒にサイト作ろうぜwwwwwwwwww」
「2ちゃん越えるサイト作ろうぜwwww」
「仕事無いんだ・・・・・・」
「やろうぜ!」
「みんなでサイトつくろうぜwwwwwwwwww」
URLリンク(gacco.o0o0.jp)
スレリンク(news4vip板)
URLリンク(ex14.vip2ch.com)
興味沸いたらきてください!
======================!! 人材募集中 !!======================
■プログラムを組んでくれる人
 *サーバー側
  言語はRubyかPerlの予定ですが、Perlが有力候補。
  ・チャット
   定期的にクライアントから着信があり、それに対して更新されたチャットのメッセージを返信する程度の能力。じゃなくて機能。
   通信するときのフォーマットは未定。
  ・ログイン・アカウント管理
   ログイン認証、各アカウントの点数などの管理。データベースは未定。
  ・お絵描き
   未定。とりあえず鯖に負担がかからない程度にたまに画像を送信してあげるって感じで
 *クライアント側
  はっきり言って俺もわからね。Ajaxだとかflashだとかjavaだとか。
■機能提案(正しくは人材ではなく、意見?)
 「こんな機能があったら良い!」「こうするともっと楽しくなる!」などの意見募集中。
 挨拶とか気にせずスレにどんどん書き込んでくれればおk
■デザイン
 サイトのデザインを考えてくれる人、作ってくれる人募集中。
 できればphotoshop illustrator使える人(プロジェクト共有しやすいので)


144:デフォルトの名無しさん
08/08/14 14:09:09
>>139
1) java.util.zip 使って外部アーカイブを読める自前の URLStreamHandler 作って、
URL.setURLStreamHandlerFactory してみるとか……
セキュリティマネージャに怒られてダメかもしれんが。

2) 1.1レベルでは互換性の高そうな標準API使う方法だと
1)のアプローチぐらいしかないので、それがダメなら
外部jar使うの諦めるか、互換性諦めるか、音出す事を諦めるか選ぶしかないと思うぞ。

145:デフォルトの名無しさん
08/08/14 14:20:42
たぶんwebで公開のappletじゃないと思うけど、Class.getResouceAsInputStream()とかかな。
javaのデスクトップは、アプレットに適したライブラリが全くなかった他の技術に先を越されたけど、それを補うように進化してきたから、1.2以前だといろいろ出来るわけじゃないよ。


146:デフォルトの名無しさん
08/08/14 15:47:14
回答ありがとうございます!

>>141,142,145
うーんやっぱ今時Appletでしかも1.1縛りなあたりがネックですよねぇ。
自分としては1.2以降のAPI使いたいんですが、MRJに対応しなくてはならない事情があるものでして。
無理そうなら環境によって動作切り替える方向で進めてみようと思います。

>>144
なるほど、URLStreamHandlerは今まで全く見てませんでした。
URL指定をメモリ内のByteArrayInputStreamにリダイレクトできればあるいは、のような感じですね。
光明が見えたような気がしてきました。この方向で色々トライしてみます。

147:デフォルトの名無しさん
08/08/14 16:47:01
ライブラリは進化してきたといってるのに、自作しちゃう人がまた一人・・

148:デフォルトの名無しさん
08/08/14 16:54:55
実行中にアプリから、あるインスタンスがどこから参照されているかを確認する術はあるでしょうか?

149:デフォルトの名無しさん
08/08/14 17:08:10
プロファイラで辿れない?

150:デフォルトの名無しさん
08/08/14 17:28:42
このままライブラリ、というか、部品化が進んでいったら、
やがてプログラマが必要なくなるのではなかろうか?
部品をちょちょいと選択すればプログラムができてしまわないだろうか?
そのとき、元プログラマの人は、どうやって食っていくのだろうか?

151:デフォルトの名無しさん
08/08/14 17:35:50
>>149
稼動サーバーでのみリークが発生するようで、アプリ内で何とかしろといわれているので、
JDTとか見たんですけどまったく理解できずに断念です。
やはりツールを使用しないと無理ですかね・・・

152:デフォルトの名無しさん
08/08/14 17:50:19
日頃の勉強と技術力しだいだなw

153:デフォルトの名無しさん
08/08/14 18:06:26
Swingにベクタ画像(psとかeps)なんかを表示するものはありますか?
探しても見つからなかったので…
ない場合、何らかの形でJPanel辺りに貼り付けて表示する方法はあるのでしょうか?

154:デフォルトの名無しさん
08/08/14 18:07:30
2chで質問するほどだなんて、ひでー職場だな。

155:デフォルトの名無しさん
08/08/14 18:12:13
>>154
俺の職場、それしかなかったけど。。

色々掲示板みてると俺のいた職場がよほどくそだったことがよくわかる。
ここで揶揄されてることが俺の職場ではまさにデフォルトだった。

ろくに経験もないうちから研修(実務にまったく役に立たない)と称して独力(上司は単なる営業社員)でつくらされて
現場にいっても俺みたいなど素人がもう一人。。できるわけねえだろ。。

156:デフォルトの名無しさん
08/08/14 18:47:47
>>110
そりゃあソースコードが複雑で読みにくいという

157:デフォルトの名無しさん
08/08/14 19:56:43
みんなそれでやってきたんだし、おまえの技術力が低いだけじゃね?

158:デフォルトの名無しさん
08/08/14 19:58:43
>>155
おまえが糞だってことが良く分かった

159:デフォルトの名無しさん
08/08/14 20:09:30
匿名メソッドのメリットがいまいち分からないのですが、
コーディング量が少し減ることと、
そのメソッドへ他からアクセスできないこと以外で
何かメリットってあるのでしょうか?
よろしくお願いします。

160:デフォルトの名無しさん
08/08/14 20:10:15
匿名メソッドなんてあったっけ?

161:デフォルトの名無しさん
08/08/14 20:15:04
匿名クラスでした、すみません

162:デフォルトの名無しさん
08/08/14 20:42:09
>>155
それは職場が糞なんじゃなくて、お前が糞なんじゃないの?
なんかお前にはVBの方が向いてるような・・・

163:デフォルトの名無しさん
08/08/14 20:46:24
そういう話はマ板でどうぞ

164:デフォルトの名無しさん
08/08/14 21:44:18
相変わらず、糞だらけのスレですね(^^

165:デフォルトの名無しさん
08/08/14 22:40:07
>>159
・いちいち名前を考えずに済む
・普通の内部クラスは書く場所と使う場所が離れていてわかりにくい

166:デフォルトの名無しさん
08/08/14 23:53:02
fileChooserを利用して、選択したクラスファイルを取得したいのですが

File file = fileChooser.getSelectedFile();
Class cls = file.getClass();

これではうまくできません。
どのようにすれば良いか、どなたか教えてくれませんか?

167:デフォルトの名無しさん
08/08/15 00:32:35
クラスファイルをロードしたいってことか?
class MyClassLoader extends ClassLoader {
public Class<?> loadClassfile(File file) throws いろいろ {
byte[] data = new byte[(int)file.length()];
FileInputStream in = new FileInputStream(file);
new DataInputStream(in).readFully(data);
in.close();
Class<?> cls = defineClass(null, data, 0, data.length);
resolveClass(cls);
return cls;
}
}
という独自クラスローダを作って、
Class<?> cls = new MyClassLoader().loadClassfile(file);
でどうよ

168:デフォルトの名無しさん
08/08/15 00:50:39
>>167
クラスを取得してコンストラクタの分析などをリフレクションを用いて実現させたいんです。

File file = fileChooser.getSelectedFile();
Class cls = Class.forName(file.toString());

とかも試したんですけどうまくいきませんでした…
なにぶん初心者なもので、根本的なことが間違ってる気がしてならないですorz

169:デフォルトの名無しさん
08/08/15 01:44:09
>>168
Class.forNameで渡すのはFileとかのクラスファイルの場所ではなくてクラス名そのもの。
クラスファイルをクラスパスの通っているところから参照できる場所に置いておけばクラス名から探してくれる。
クラス名がfoo.bar.Hogeならクラスパスの通っているところのサブディレクトリとしてfoo、その下にbarという
ディレクトリがあって、その中にHoge.classがあればClass.forName("foo.bar.Hoge")でClassインスタンスが得られる。
クラスパスとは無関係にクラスをロードしたいのならURLClassLoaderを使うのが楽かも。
URLClassLoaderでぐぐればサンプルはいくらでもある。

170:デフォルトの名無しさん
08/08/15 04:09:03
>>167
readFully(data); を使うのは単に趣味ですか?
read(data);とどう違うのかAPI Docs上から分からないんですがご存知でしょうか。

171:デフォルトの名無しさん
08/08/15 04:57:34
readは指定したバイト数全部を読み込むことは保証されていない
1バイトでも読めれば、読み込めたバイト数を返す

readFullyは指定したバイト数全部読み込む
読み込めなければEOFException

172:デフォルトの名無しさん
08/08/15 05:35:43
秒妙な違いですけど、引数がFileなのでreadFullyはやらないほうがいいのでは?
間違ってはないけど、そこで使うのはDataInputの設計目的と微妙に違うような…


173:デフォルトの名無しさん
08/08/15 09:19:21
いつも来ていた糞野郎は死んだか?

174:デフォルトの名無しさん
08/08/15 10:29:51
Thread.currentThread().getStackTrace()でスタック情報が取得できますが、引数インスタンスは取得できません。
引数インスタンスを取得する方法はあるでしょうか?

175:デフォルトの名無しさん
08/08/15 10:39:16
>>174
caller の引数に触りたいって話ならデバッガ使えば?

176:デフォルトの名無しさん
08/08/15 14:05:49
糞はドブに流れていってしまったが?

177:デフォルトの名無しさん
08/08/15 19:18:11
テストについて質問です。
値を返すメソッドなら期待される値と実際の値を比較しますが、
値を返さないメソッドはどのようにテストをすればいいのでしょう。
DBに書き込むメソッドとかなら書き込まれた値をチェックできますが、
例えば以下のようなものです。
・メールを送信するメソッド
・コンソールに文字を出力するメソッド

178:デフォルトの名無しさん
08/08/15 19:46:12
mainって普通プログラムの中でどういう部分を書くものなのでしょうか?
staticだから長いプログラムを書くと面倒になる部分が多いので
mainでは自分のクラスのコンストラクタをnewするくらいにしか使わなくて、
そのコンストラクタの方で色々書くようにしているのですが、どうなんでしょう?



179:デフォルトの名無しさん
08/08/15 19:49:06
テストの基本は事前条件と事後条件が正しいことを確認すること
・メールを送信するメソッド
メールを送信するクラスが正しく呼び出されたかをチェックする

・コンソールに文字を出力するメソッド
これは難しいのでやらない
やる場合は、特定の文字を出力するメソッドのテストとしておいて、
Writerはsetterで設定できるようにしておく
どちらにせよコード中にSystem.outがあるのはウンコ

180:デフォルトの名無しさん
08/08/15 19:51:46
>178
いわゆるエントリポイントってやつだから、外部から起動する時に必要な範囲の処理を行うのが正しい
なので、コンストラクタの方で色々やっているのは正しいよ。
mainに書くべき処理といえば、後はプログラムの実行引数のチェックやデフォルト値の設定。
バグで落ちたときにどうするかの処理とか、そんな感じだろうな

181:177
08/08/15 20:12:33
>>179
> メールを送信するクラスが正しく呼び出されたかをチェックする
これ、もうちょい詳しく解説してくれるとうれしいです。

> Writerはsetterで設定できるようにしておく
なるほど。それなら結構簡単にテストできそうですね。

182:デフォルトの名無しさん
08/08/15 20:22:42
>>177
テストアドレスに送信して、受信して、その内容をチェックすれば良いだけでは

183:デフォルトの名無しさん
08/08/15 21:40:47
>>181
方法は幾つかあるけど、インターフェイスをきってテスト用のオブジェクト(モック)でテストを実行する。
モックなんで実際にはメールを投げずに内部的なステータスを変化させるだけ
テストとしてはステータスが変わった(目的のメソッドが実行された)ことを確認する

完全にJavaMailを使っている箇所などをテストする場合は面倒だけど、EasyMockなんかを利用するしかない。
単体テストで再帰的にやるならばこんな感じ。

後は本当に動くかどうかは開発中は動作確認レベルで済ませてシステムテストでやる

184:デフォルトの名無しさん
08/08/15 22:20:58
ネットワークプログラミングを勉強中なのですが、
サーバ側
public static void main(String[] args){
ServerSocket ss=new ServerSocket(7777);
Socket sock=ss.accept();
BufferedReader br=new BufferedReader(new InputStreamReader(sock.getInputStream()));
System.out.println(br.readLine());
br.close();
sock.close();
ss.close();
}

クライアント側
public static void main(String[]  args){
Socket sock=new Sock(コンピュータ名,7777);
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(sock.getOutputStream));
bw.write(br.readLine());
bw.close();
br.close();
sock.close();
}

この二つを実行するとサーバ側で何も表示されません。
クライアント側のBufferedReaderの件を全部消してbw.write("hoge");
とかに直すと、ちゃんとサーバ側のPCでhogeと表示されるのですが、
何がいけないのでしょうか?

185:デフォルトの名無しさん
08/08/15 22:23:09
closeしちゃダメだろ

186:デフォルトの名無しさん
08/08/15 23:50:37
JNIを使ってJavaの引数にクラスを指定し、
C側でクラス内のString型のフィールドにデータを入れようと以下のようなプログラムを書きました。
そしたら半角カナに濁点の文字が文字化けしてしまいました。
こういった場合どのように対処したらいいのでしょうか、ご教授ください!

C側↓
JNIEXPORT jlong JNICALL Java_Test(JNIEnv *env, jclass, jobject obj){
jclass cs = env->GetObjectClass(obj);
jfieldID fid = env->GetFieldID(cs,"strParam" , "Ljava/lang/String;");
env->SetObjectField(obj, fid, env->NewStringUTF("サブキー");
return 0;
}

java側↓
HogeClass hoge = new HogeClass();
 Main.Test(hoge);
System.out.println(
new String( hoge.strParam.getBytes("iso-8859-1"), "MS932")
);


187:もう泣きそう
08/08/16 01:30:05
UNIXの環境変数受け渡しについて
教えて下さい。

シェルスクリプトで設定した環境変数は、JAVA(jarのクラス)側で
読み取れると思いますが、その逆は可能なのでしょうか?

以下を想定しています。
もし可能なら、メソッド名とかを教えて下さい。

-----------------------------------------
#!/bin/bash
export AAA=a.txt

java classA -xm=512m・・・

echo KEKKA1=$KEKKA1 ←これが可能でしょうか?
echo KEKKA2=$KEKKA2 ←これが可能でしょうか?
-----------------------------------------

public void class cassA {
  String aaa = system.getenv("AAA");
  String kekka1 = "data1"; ←これを返したいのです。
  String kekka2 = "data2"; ←これを返したいのです。
  (設定するロジックというかメソッド名・・・)
}

JAVA側の変数をシェルで読み取れれば良いのですが、
もし可能なら、メソッド名とか簡単でもいいのでサンプル例等を
教えて下さい。
もう泣きそうです・・(;-;)

188:デフォルトの名無しさん
08/08/16 01:38:01
何か良くわからんけどファイルに書き出せば良いじゃん
でシェルで読み込めば

189:デフォルトの名無しさん
08/08/16 02:03:52
>>187
通常、子プロセスは親プロセスの環境変数を変えられない。

190:デフォルトの名無しさん
08/08/16 05:21:40
JDBC での Oracle との連携を勉強しようとしていたら
Oracle のサイトに Java関連の Tips が大量に合って助かったのですが
逆に .NET でのサンプルが皆無だったので気になりました
Oracle と Java って何か深い繋がりがあるのでしょうか?
それとも Oracle が Java を一方的に支持してる感じ?

191:デフォルトの名無しさん
08/08/16 07:40:40
>>186
半角かな以外は化けないか確認した?
半角英数はともかく、漢字は化けると思うが。

> env->SetObjectField(obj, fid, env->NewStringUTF("サブキー");
これ UTF-8 渡してるのか?
VisualC++ とかなら env->NewString(L"サブキー", 5) とかした方が。

> new String( hoge.strParam.getBytes("iso-8859-1"), "MS932")
これやると確実に化けるんじゃね?

192:デフォルトの名無しさん
08/08/16 08:49:08
>186
JNI を使ってJavaクラスのパラメータをいじる方法は良く分からんですが、
半角カナというのは、どの文字符号化方式で定義されているものを使うのですかね。

String 内部は UTF-16 (char) 配列です。

193:デフォルトの名無しさん
08/08/16 09:43:02
a

194:デフォルトの名無しさん
08/08/16 11:03:24
interfaceは多重に継承できるんですけど、もしスーパー・インタフェイスと
メソッド名やシグニチャがかぶったら継承できないんですか。
特に他の人が使ったインタフェイスで、
戻り値がかぶったり、戻り値がlongとかだったらどうするのでしょうか。

どうやって回避するんでしょうか?

195:デフォルトの名無しさん
08/08/16 11:27:09
>>194
シグニチャ同じで戻り値型違うのは無理。
シグニチャ同じで戻り値型同じなら実装できるけど、
各interface が別々の振る舞いを期待してる場合は無理。

メソッド名付ける時点で被らないように気をつけるぐらいしかないね。

196:デフォルトの名無しさん
08/08/16 11:30:12
>>194
インターフェースはそもそもシグネチャしか定義しない(定数定義もあるけどここでは無視)ので、多重定義になっても問題はない。
何故なら、同じ名前、同じ引数、同じ返り値を持っている、ということ以外の情報は定義されないから。
実装側で、同じシグネチャなのに異なるインターフェースでアクセスされると違う動作をしなければならない、ということであれば、それは設計が間違っている。

197:デフォルトの名無しさん
08/08/16 11:38:24
>>196
そういう問題じゃなくて、AppendableとStringBuffer.appendのような話をしてるんですけど…

それもjdk1.4以前だとどうやって回避してたんでしょうか。



198:デフォルトの名無しさん
08/08/16 11:41:59
> AppendableとStringBuffer.appendのような話
このケースって、なんか問題あんの?

199:デフォルトの名無しさん
08/08/16 11:48:01
jdk1.4以前

200:デフォルトの名無しさん
08/08/16 11:49:53
1.4以前は Appendableないから問題ないよ。

201:デフォルトの名無しさん
08/08/16 12:02:47
>>197
何が疑問なのかわからん。その例ってインターフェースの多重継承とは何の関係もないじゃん。
一応書いとくけど、インターフェースの多重継承って、
interfece SuperInterfaceA { int hoge(int x); }
interface SuperInterfaceB { int hoge(int x); }
interface SubInterface extends SuperInterfaceA, SuperInterfaceB {}
というものだぞ。

202:デフォルトの名無しさん
08/08/16 12:25:23
>194
こんなのでどうさ。

URLリンク(www.y-adagio.com)

203:デフォルトの名無しさん
08/08/16 12:50:00
classと同じでinterfaceをextends出来るけど、継承」の意味が少し違うようですね。

本当は、自作のインタフェイス interface My_interface{
My_interface append(My_interface); 
}
例えば引数assertチェックありで、
class StringBufferも引数My_interfaceに参加させたいんですけど、
class StringBufferは当然他人が作ったライブラリなので、My_interfaceを実装できません。

今のところifで分岐してるんですけど、こういうときは、どうやれば自作インタフェイスにくわえられるんでしょうか。




204:デフォルトの名無しさん
08/08/16 12:52:20
例えば引数assertチェックありとかの実装で。

205:デフォルトの名無しさん
08/08/16 12:58:17
アダプタパターン

206:デフォルトの名無しさん
08/08/16 13:45:32
アダプタよりもデコレータ・パタンかな

207:デフォルトの名無しさん
08/08/16 13:47:28
>>200
例えばで出してみたんですけど、分かりませんか?
自作したインタフェイスの話しなんですけど・・・

208:デフォルトの名無しさん
08/08/16 13:53:32
なんかでラップすりゃいいじゃん

209:デフォルトの名無しさん
08/08/16 14:15:28
>>203
まず、Javaでは原則として既存のクラスやインターフェースに手を加えることはできない。
該当のクラスがfinalでなければ、サブクラスを作ってそこでimplementsする手はある。
該当のクラスがfinalであれば、自作のクラスでラップするしかない。

210:デフォルトの名無しさん
08/08/16 16:38:08
Listのキャストはエレメントを個別にキャストするしかありませんか?

211:デフォルトの名無しさん
08/08/16 16:38:53
generics 使えば?

212:デフォルトの名無しさん
08/08/16 16:47:37
どうするんですか?

(List<MyClass>)list
のようなキャストが失敗します。

213:デフォルトの名無しさん
08/08/16 16:54:48
自作したインタフェイスを使ってライブラリ作ってんるんですけど、
そこに他人が作ったクラスも参加させるのはどうするんでしょうか?

とういことなんですけど、これだけじゃ何言ってるかわからないと思いませんか。

214:デフォルトの名無しさん
08/08/16 16:57:22
>>213
共有ライブラリとかプラグインとかリフレクションの世界のことかと思った。

215:デフォルトの名無しさん
08/08/16 18:33:05
class MyBig extends BigDecimal {
    MyBig(String v){super(v);}
    public MyBig abs(){return this;}
}

BigDecima.abs()をオーバライドしたいのですが、1.4以前ではどうやるんでしょうか。
negate()と同じく、メソッド名に意味があるので名前を変更できないので何かよい方法はないでしょうか?

216:デフォルトの名無しさん
08/08/16 18:54:57
eclipse の JDT を使ってみようと思ってるんですが,eclipse 上で,
import org.eclipse.jdt.core.dom.*;
などど打っても org.eclipse が見つかりませんというエラーが出てしまいます.

どうすれば解決できますか?

217:デフォルトの名無しさん
08/08/16 19:09:49
>>215
1.4 だと covariant return typeが使えないから public BigDecimal abs()で我慢。
もしくはextends BigDecimalを諦める。

218:デフォルトの名無しさん
08/08/16 19:43:52
finalで参照型変数を宣言した場合、
それはどこを参照するかを固定するという認識で合ってますでしょうか?
その場合、参照先のインスタンスの属性をsetter等を用いて変更されないようにするというのは
不可能なのでしょうか?

219:デフォルトの名無しさん
08/08/16 20:09:15
>>213
SPIのことじゃない?

220:デフォルトの名無しさん
08/08/16 20:37:33
>>218
Immutable な拡張クラス作って属性変更できないようにするとか
不可能じゃないけど変更されないようにできる便利な言語機能はない。

221:デフォルトの名無しさん
08/08/16 20:40:07
>>218
setterを作らない

222:デフォルトの名無しさん
08/08/16 21:36:26
Java を使って組み込み系のソフトウェア(携帯アプリ除く)を作成することはできますか?

223:デフォルトの名無しさん
08/08/16 21:48:51
CDC JavaTVetc

224:デフォルトの名無しさん
08/08/16 23:41:22
>>216
自己解決しました.
プロジェクトをプラグインプロジェクトに変更して,プラグイン依存関係を解決したらO.K.でした.

225:デフォルトの名無しさん
08/08/17 00:25:07
>212
キャストは動的。ジェネリクスは静的かつ、型情報は消滅。

>218
変更させたくないインスタンスは委譲でも使って隠匿すべし。

226:94
08/08/17 01:12:31
94です。だいぶ前で皆さん忘れておられると思いますが、この擦れの方のおかげであの質問は解決しました。
遅くなりましたが、応えてくださった97さんや99さんなど、皆さんありがとうございます。

・・・すいません。それだけです。

227:デフォルトの名無しさん
08/08/17 01:27:37
どうせならどのように解決したかを書いてくれると、後から読む人のためになって良い

228:デフォルトの名無しさん
08/08/17 12:55:58
スタンドアロンのJavaアプリで、HTMLのクリッカブルマップのようなことは、可能でしょうか?
具体的には、フォーム上に日本地図の画像があって、
各県をクリックすると、ポップアップウィンドウが表示される、
みたいな感じなんですが。

229:デフォルトの名無しさん
08/08/17 13:00:47
非常に簡単

230:デフォルトの名無しさん
08/08/17 19:59:57
このスレには親切な人が多いですね。たまにマ版と間違えてるような変な人もいますが・・・・

231:デフォルトの名無しさん
08/08/17 20:34:20
マと何か区別しなきゃいけないのか?

232:デフォルトの名無しさん
08/08/17 21:23:11
>>231
愚痴を書き込むスレではないだろ

233:186
08/08/17 21:28:01
なんとか解決したっぽいです。
初心者なので、UNICODEとUTF8の違いとかいまいちピンときませんが、
イメージは「UNICODEがIDとしたらUTF8はIDをUTF8という形式で表現したデータ」ということでしょうか?
間違ってましたら指摘してくださいorz

で、UTF8での受け渡しを止めてUNICODEでの受け渡しをするようにしました

C側↓
JNIEXPORT jlong JNICALL Java_Test(JNIEnv *env, jclass, jobject obj){
jclass cs = env->GetObjectClass(obj);
jfieldID fid = env->GetFieldID(cs,"strParam" , "Ljava/lang/String;");

const char* cc = "サブキー";
int unicodeLength = MultiByteToWideChar(CP_ACP, 0, cc, strlen(cc), NULL, 0);
WCHAR* unicodeBuffer = new WCHAR[unicodeLength];
MultiByteToWideChar(CP_ACP, 0, messagetmp, strlen(messagetmp), unicodeBuffer, unicodeLength);
jstring strj = env->NewString((jchar *)unicodeBuffer,unicodeLength);
env->SetObjectField(obj, fidsData, strj);
return 0;
}

java側↓
HogeClass hoge = new HogeClass();
Main.Test(hoge);
System.out.println( hoge.strParam );

ちゃんと表示できてるみたいです。
しばらくはまってたのですが、「sizeof」で文字サイズを取得してたのですが、
マルチバイト?では使えなくて「MultiByteToWideChar」を使用しないといけないということですね。今までjava言語しか触ったことないのでしたorz
もっと簡単な方法ありましたら是非ご教授くださいm(__)m


234:デフォルトの名無しさん
08/08/17 21:41:51
>>233
wchar_t wcstr[] = L"サブキー";
jstring strj = env->NewString((jchar *)wcstr, sizeof(wcstr) / sizeof(wchar_t));

Windows環境っぽいので wchar_t が UTF-16 きめうち。
テストしてないので動かなかったらごめん。
あと new WCHAR[unicodeLength] したのに delete しなくていいんか?

235:デフォルトの名無しさん
08/08/17 22:02:02
>>233
いくら夏とはいえ、ちょっと見にコンパイルを通らないコードを貼るやつって、何がしたいんだろうな・・・

236:デフォルトの名無しさん
08/08/17 22:12:35
初心者ってのはそういうもんさ

237:デフォルトの名無しさん
08/08/17 22:24:06
おい、おまいらJavaでアップロードされたファイルのヘッダ検査を行なうjarはないですか?
教えてください。お願いします。

238:デフォルトの名無しさん
08/08/17 22:27:44
調子のんな

239:デフォルトの名無しさん
08/08/17 22:33:02
やっぱC#スレの方がいいわ

240:デフォルトの名無しさん
08/08/17 23:14:57
javaのvmって sun と ibm と hp の3種類?

241:デフォルトの名無しさん
08/08/18 00:00:16
Swingを使ってGUIを書いています。
所謂非矩形ウィンドウを作りたいと思い、検索してみたところ、
1. Mac限定の方法(背景色を透過色に設定?)
2. ウィンドウの下をキャプチャして疑似透過
の二つがあるらしい、ということを知りましたが、1番は問題外、
また、最前面に表示するような仕様のため、2番では背景と矛盾が
生じない為の頻繁な更新による負荷がやや重めになってしまいます。
もし他に方法がありましたら、参考URL等を教えてください。

#具体的には、Officeに出てくるうるさいイルカみたいな感じで、
#画像を枠無しで表示したいと考えています
#SWTだとRegionとやらで実装できるようなのですが...

242:デフォルトの名無しさん
08/08/18 00:06:32
jdk7を待った方がいいんじゃないかな?
URLリンク(jdk6.dev.java.net)
確かこれでShapeを使った非矩形ウィンドウが作れたはず・・

243:デフォルトの名無しさん
08/08/18 00:29:07
修飾子の読み方を教えて下さい
Gooleしても見つかりません

244:デフォルトの名無しさん
08/08/18 00:31:38
そりゃ見つからないわ

245:241
08/08/18 00:32:08
おぉ。どうもありがとうございます。
AWTUtilitiesとやらで非矩形や透過ウィンドウが実装出来るようになるのですね。
とりあえずはBeta使って仮実装したり、他の方法も色々工夫したりしてみながら
のんびりと正式版のリリースを待つことにします。

素早いご返答、ありがとうございました。

246:243
08/08/18 00:38:37
Googleの間違いでした

ほんと修飾子って何て読むんですか?

247:デフォルトの名無しさん
08/08/18 00:51:09
おもしろい回答できないわ。
「しゅうしょくし」だよ。

248:デフォルトの名無しさん
08/08/18 00:51:29
jdbcのPreparedStatementなんですが、
setLongに高いインデックス(10くらい)を指定すると、
executeUpdateでエラーが発生するようです。
要は、INSERT INTO文のVALUESに指定できる?の数に制限が
あるということなのですが、この問題にはどう対処したらよいでしょうか。

249:デフォルトの名無しさん
08/08/18 00:51:51
「しゅうしょくし」

ってか流石にこれはガチで小学生でも分かるから、
そういう意味ではなくvolatileとかstrictfpとかの読み方を聞いてるのか?

250:デフォルトの名無しさん
08/08/18 01:01:29
特殊なデザインのウインドウは、はっきり言って使いづらいからやめて欲しい

251:デフォルトの名無しさん
08/08/18 01:04:32
しゅうしょくしがしょくしゅにしか見えないんだが・・・

252:243
08/08/18 01:10:03
>>247
>>249

ガチで有難うございます
ほんと何て読むか解らなくて…

年は40なんですが、趣味でプログラムでも始めてみようかと思い
創るJavaって本を買いまして、暇暇に読んでます

もちろん仕事はプログラムとは
あまり関係ありません

ただ、知識は無いと
指示が出来ないんですよね…

253:デフォルトの名無しさん
08/08/18 02:14:27
>252
URLリンク(www.okapiproject.com)

254:デフォルトの名無しさん
08/08/18 09:39:00
>>252
ではオジサン相手に手取り足取り教えてやろうか。

255:デフォルトの名無しさん
08/08/18 09:41:55
むしろ中途半端な知識で指示される方が迷惑

256:デフォルトの名無しさん
08/08/18 09:48:07
>>252
老婆心ながら
読むだけじゃだめだぞ

257:デフォルトの名無しさん
08/08/18 11:54:15
Javaなんかネットの勉強サイトで十分しょw

258:デフォルトの名無しさん
08/08/18 11:56:17
じゃう゛ぁ♪じゃう゛ぁ♪
じゃう゛ぁじゃう゛ぁジンジンジーン♪

259:デフォルトの名無しさん
08/08/18 12:07:08
ConcurrentSkipListSetってクラスつかったら
プログラムを実行するたびに
同じ要素が何個も一つにセットに入ったり、一つだけ入ったりしたんだけど。
なぜですか?
TreeSetにしても同じような症状でした。
でもCopyOnWriteArraySetにしたら同じ要素は一つしかありませんでした。
どうしてかおしえてください。

260:デフォルトの名無しさん
08/08/18 12:50:32
初心者の質問ですいませんが教えてください
javaにはオペレーターは無いはずですが
なぜStringクラスだけ+=が使えたりするんでしょうか
どなたかおしえてください

261:デフォルトの名無しさん
08/08/18 12:51:46
組み込み

262:デフォルトの名無しさん
08/08/18 13:42:50
Instrumentを変更してMIDIを再生したいのですが、現在使用可能なSynthesizerがcom.sun.media.sound.MixerSynthだけで、そのSynthesizerでloadInstrument()してもIllegalArgumentExceptionを投げられてしまいます。
ソースを読んでみると、MixerSynthの親の抽象クラス「AbstractPlayer」にて、型のチェックでHeadspaceInstrumentの子クラスじゃないと読み込めないようにしてあるようなのです。
さらにそのHeadspaceInstrumentというのはデフォルトアクセスで、どうしようもないのです。

どのようにすればInstrumentを追加・変更できるのでしょうか?

263:デフォルトの名無しさん
08/08/18 14:01:48
>>259
日本語で

264:デフォルトの名無しさん
08/08/18 15:17:26
>>260
> javaにはオペレーターは無いはずですが
Javaにはオペレータが結構あります。
Stringクラスだけでなくintでも+=が使えます。
クラス型に対するオペレータでも=や==はStringクラス以外でも使えます。

265:デフォルトの名無しさん
08/08/18 15:56:23
javaってcみたいにコアダンプ(メモリダンプ)できないのでしょうか。
cの場合ログから解析が難しい場合はその段階でkill -SEGVでメモリダンプしてデバッガでメモリの情報を調査するという方法があり
それをjavaでもやりたいと思っているのですが。
eclipseで接続できないところなので、そこでダンプを取って持ち帰ってeclipseで確認したいと思っていますが、
cのようにいかないですかね???

266:デフォルトの名無しさん
08/08/18 16:19:55
java vmのコアダンプを追いかける・・・言ってみただけ

267:デフォルトの名無しさん
08/08/18 16:45:23
class Oya{
public void show() throws Exception{
System.out.println("oya");
}
}

class Ko extends Oya{
public void show(){
System.out.println("ko");
}
}

public class Cui{
public static void main(String args[]){
Ko a=new Ko();
Oya b=new Ko();
a.show();
b.show();
}
}

これでb.showでエラーが出るのが理解出来ません。
bはサブクラスでオーバーライドされた方のメソッドを呼び出しているので
やっていることはa.show()と同じ気がするのですが、何ででしょう?

268:デフォルトの名無しさん
08/08/18 16:47:40
>>265
VisualVM とか jhat を調べてみるといいかも

269:デフォルトの名無しさん
08/08/18 16:52:39
>>262
URLリンク(www.jsresources.org)

270:デフォルトの名無しさん
08/08/18 16:56:53
>>267
Oya#show は Exception を投げると宣言しているので、
main の b.show() が投げる Exception をどうにかする必要がある
(実際には投げられないのだとしても、宣言してる以上、処理しないとだめ)

271:デフォルトの名無しさん
08/08/18 17:09:06
>>270
これって親のメソッドが仮に例外投げないとしたらコンパイルが通って
b.showの実行結果は「ko」になりますよね。

Oya#showはKo#showで消されているため例外投げる部分が無いものになる気がするんです。
素直にKo#showを使ったa.showは例外処理必要無いのに、
なんでOyaの参照で間接的にKo#showを使うと例外処理が必要になるんでしょう?

272:デフォルトの名無しさん
08/08/18 17:21:08
>>271
b は Oya だと宣言してるし。

273:デフォルトの名無しさん
08/08/18 17:24:36
javaの勉強中でEclipseを使ってプログラムを作り、JSP→クラスの遷移はできるのですが、html→クラスの遷移ができません。
内容はどちらもボタンを押すとデータの送信などは行わず遷移するだけなので、どちらも同じ記述をしているのですがhtml→クラスがうまくいきません。
JSP→クラスの設定はweb.xmlで記述しているのでhtmlだとweb.xmlが読み込まれないのが原因なのではないかと思っているのですが、web.xmlが使えないとなると解決方法がわかりません。
どうすればよいのでしょうか。

274:デフォルトの名無しさん
08/08/18 17:25:47
>>272
そのOyaの関数がKoの関数になってるからってことを疑問にしてるんでしょ。

275:デフォルトの名無しさん
08/08/18 17:28:50
>>271
b が Oya 型だから b.show は単純に Oya#show の宣言を見る

Oya b = new Oya();
のときと
Oya b = new Ko();
のときで b.show のエラーの有無が変わってはかなわんし
(b は同じ Oya 型。単に初期値が違うだけ)

もし
Oya b = null; とか
Oya b = hoge(); とか
Oya b = x < 10 ? new Oya() : new Ko();
とかだったらどうするよ

276:デフォルトの名無しさん
08/08/18 17:43:48
>>272,>>275
レスありがとうございます。
宣言はスーパークラスの方を見て中身はサブクラスを見てる感じなんですね。
オーバーライドで引数とか全部一緒だからそんなことも出来るのか。

277:デフォルトの名無しさん
08/08/18 17:45:55
>bはサブクラスでオーバーライドされた方のメソッドを呼び出しているので

というのが分かるのは 275 が書いたように実行時なんだな。
コンパイル時は宣言した型でしか見てないんだな。

278:デフォルトの名無しさん
08/08/18 19:39:27
>>264
> >>260
> > javaにはオペレーターは無いはずですが
> Javaにはオペレータが結構あります。
> Stringクラスだけでなくintでも+=が使えます。
> クラス型に対するオペレータでも=や==はStringクラス以外でも使えます。
例えば
public AnyClass{
int n;
String s;
public AnyClass()
{
n = 0;
s = null;
}
public AnyClass(int num,String str)
{
n = num;
s = str;
}
}
みたいなクラスがあったとして
下記のような動作させるにはどうすれば良いのでしょう
AnyClass obj1 = new AnyClass(10,"ab");
AnyClass obj2 = new AnyClass(1,"c");
AnyClass obj3 = new AnyClass();
obj3 = obj1 + obj2;

279:デフォルトの名無しさん
08/08/18 19:56:30
>>278
演算子の多重定義はサポートしてないから無理。

280:デフォルトの名無しさん
08/08/18 22:19:35
>278
public AnyClass plus(AnyClass other)

281:デフォルトの名無しさん
08/08/18 22:21:10
>>280
演算子のオーバーロードがしたいって言ってるんじゃないの?

282:デフォルトの名無しさん
08/08/18 23:04:54
>>260
× Javaにはオペレータは無い。
○ Javaにはオペレータのオーバーロードはできない。

で、Stringには連結オペレータが予め用意されている、と。

なぜ連結オペレータが用意されているかは設計者にでも聞いてくれ。

283:x
08/08/18 23:28:03
初めまして。最後のdrawLineでintを使えないといわれてしまいます。
分かる方いらっしゃいますか?
よろしくお願いします。


import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Font;
import java.math.*;


/**
* @param args
*/
public class applet5no1 extends Applet
{
public void paint(Graphics g)
{

int x1,y1,sec;
sec = 30;
x1= 6*sec;
g.drawLine (100, 100,100+70*Math.cos(60 * Math.PI/180) , 100-70* Math.sin(60 * Math.PI/180));

}
}



284:デフォルトの名無しさん
08/08/18 23:31:43
intが使えないから適切な型に変換しろってこと

285:x
08/08/18 23:33:27
すいません。具体的にはどうするかわかりますか?

286:デフォルトの名無しさん
08/08/18 23:43:49
>>283
sinとかcosの結果はdouble型
drawLineの引数はint型
なので型が合わない
intに変換しる

287:x
08/08/18 23:45:02
ありがとうございます。助かりました

288:x
08/08/18 23:59:08
先ほどのものです。
いろいろ試したのですが、どうしてもうまくいきません。
具体的にどうすればいいか教えてもらえませんか?


289:x
08/08/19 00:13:44
いろいろ試したというのは嘘で、試そうにもやり方が全く分からないので、手取り足取り教えてくれませんか。
いろいろ試したのなら、どう試したけれど、どううまくいかなかったが書けるはずなのに、
それができないから嘘がばれると思ったので正直に書きました。

290:デフォルトの名無しさん
08/08/19 00:15:58
お前馬鹿だろ
リファレンス見るとかググるとか思いつかないのか
そんなことだと永久に2chに聞きに来るつもりか?

291:x
08/08/19 00:20:42
リファレンスってなんですか?どこにあるのか分かりませんし、見方が分かりません。
ググろうにも何をキーワードにすればいいか全然思いつきません。
ここは初心者にきびしいネットワークですね。

292:デフォルトの名無しさん
08/08/19 00:22:10
>>291
君がゆとり杉なのかもね。

293:デフォルトの名無しさん
08/08/19 00:33:40
実は趣味でプログラムしてます。今42歳でニーとですす。

294:デフォルトの名無しさん
08/08/19 00:35:30
>>291
URLリンク(java.sun.com) からJava SEのリンクを辿っていけばそのうちに辿りつけますよ。
画面左上はパッケージのリスト、左下にクラスのリスト、右がメインビューワとなっております。
防御スクリーンを展開したままフェイザーと光子魚雷の準備を抜かりなきようお願いもうしあげます。

295:デフォルトの名無しさん
08/08/19 00:36:09
>>293
名前のxが抜けてる抜けてる

296:デフォルトの名無しさん
08/08/19 00:48:39
>>291
・貴方が書いている言語はきっと“Java”
・二人も“変換”しろと言っている

いくら考えても無いところからキーワードを思いついたりしないだろうな、すでに書いてあるのに……


297:デフォルトの名無しさん
08/08/19 00:56:37

初心者

【人々】
(1)
・「覚えよう」と言う意思の無い人。
・こう言う人は、永遠の初心者。

(2)
・全てをチャラにできる魔法の言葉。
・質問をする時にこの言葉さえつければ、何を聞いても良いと勘違いしている方がいらっしゃる。
・「初心者なら、そういう難しい事は考えずにまずは基本を覚えなさい。」と、言いたくなる事がある。 でも、お客さんだしそんな事は言えないしなぁ・・・。

某辞典から
いや誰とは言わないけどね

298:デフォルトの名無しさん
08/08/19 00:57:21
Sun SPOTの話題はどこに持ってけばいいんでしょ?

299:デフォルトの名無しさん
08/08/19 00:59:36
初心者なんですけど、ジャヴァってなんですか?アップレットとどう違うんですか?

300:デフォルトの名無しさん
08/08/19 01:04:25
>>299
じゃう゛ぁ(java)は今をときめくニューウェーブ、時代の最先端を行く今注目のプログラミング言語です。

アプレットはIEやFF上で動作するJavaプラグインを用いた実行形態の一種です(?)
Applet/JAppletクラスを用いて作成します。

通常のJavaアプリはApplet/JAppletクラスを使いません。

301:デフォルトの名無しさん
08/08/19 01:18:53
アプレットでフラッシュみたいのはやんないんですか?
何でみんなフラッシュ使うんでしょうか。
初心者なんですけど、フラッシュの方が最先端な気がします。

302:デフォルトの名無しさん
08/08/19 01:23:00
スレの無駄だからそろそろ初心者ごっこはやめろ
誰も本気で釣られんよ

303:デフォルトの名無しさん
08/08/19 01:28:02
初心者だからって馬鹿にしないで下さい!

304:デフォルトの名無しさん
08/08/19 09:41:23
ActionScriptも多少触ったけど、言語仕様がルーズ(型の扱いとか)なのと
根っこのトコの動作が見えにくいのとでなんかやり辛いんだよなぁ
マルチスレッドが普通にできないのもめんどい

グラフィックやサウンド系の扱いが手軽なのと、プラットフォームの普及度から言うと
よっぽど複雑な処理やるんでもなければFlashでやるのがいいでしょうね

305:デフォルトの名無しさん
08/08/19 10:00:45
アプレット技術はそのままで、ブラウザ埋め込みレットとしてアプレットを拡張すればいいんじゃないかと思う。
それこそアプレット・アプリケーション・フレームワークが整備されればいいのかな。スウィングと同じように。

306:デフォルトの名無しさん
08/08/19 10:20:26
javaのpipeってLinuxのmkfifoでできる名前付きパイプを実現するものでしょうか?

307:デフォルトの名無しさん
08/08/19 10:32:26
java.nio.channels.Pipe の事なら、そもそもプロセス間通信できなかったような

308:デフォルトの名無しさん
08/08/19 16:34:14
アプレットをいろいろといじっているのですが、ボタンを付けることについて質問です。
ボタンを押されるたびに、たとえば"A"という文字を表示するxとy座標を変えて行きたいのですが、
public void actionPerformed(ActionEvent e){
if(e.getSource() == btn){;
x+=20;
y+=20;
repaint();
}
}
とすれば、g.drawpaint("A",x,y)がリペイントされて、ボタンを押されるたびにx,yが20ずつずれて表示されると思っていたのですが
最初に押したときはxとyが20ずつ動いたのですが連続してボタンを押しても変わることはありませんでした。
押すたびにずれるようにするにはどうすればいいでしょうか?
よろしくお願いします。

309:デフォルトの名無しさん
08/08/19 16:39:47
きっと何処かで毎回xとyを0にしてるんだな

310:デフォルトの名無しさん
08/08/19 17:03:31
最初にボタンを押したときは動くのでx,yがリセットされていることは無いと思うのですが、
class MyFrame extends Frame implements ActionListener{
Button btn;
int x = 50,y=50;
public MyFrame(String title){
setTitle(title);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});

}
public void paint(Graphics g){
btn = new Button("ボタン");
btn.addActionListener(this);
add(btn);
btn.setBounds(120,200,90,30);
g.drawString("A",x,y);
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == btn){
x=x+20;
y=y+20;
repaint();
}
}
}
これはフレームになっていますが、基本的にかんな感じです。

311:デフォルトの名無しさん
08/08/19 17:06:57
なんでpaintのたびにボタンが増えてるの・・?

312:デフォルトの名無しさん
08/08/19 17:32:02
すいません。ボタンが増えてました・・・paintから出したら上手く動きました。
有難うございました。

313:デフォルトの名無しさん
08/08/19 17:59:23
Object.classって何?

314:デフォルトの名無しさん
08/08/19 18:13:30
>>313
Object クラスを表す Class クラスのリテラル
new Object().getClass() と同値

315:デフォルトの名無しさん
08/08/19 18:52:33
>>314
㌧クス

316:デフォルトの名無しさん
08/08/19 19:08:49
メモ帳から、改行やスペースを含む文字列を読み込んで、char型の配列に入れるというものを作りたいのですが、うまくいきません。
String型の配列に入れる事は出来たのですが、Char 型に変換することができませんでした。以下は私のソースプログラムです。
public class Main{
public static void main(String[] args){
List<String[]> list =new ArrayList<String[]>();
String cell[]=new String[1000];
try{
FileReader fr =new FileReader("test.txt");
BufferdReader bf =new BufferedReader(fr);
String st =null;
while((st= bf.readLine())!=null){
String[] line=st.split("");
list.add(line);}
for(String[] values: list){
for(String value: values){cell[i]=value;i=i+1;}}
}catch(IOException e){}}}

317:デフォルトの名無しさん
08/08/19 19:37:16
>316
Stringオブジェクトからcharを取り出す方法があれば良いのかな
> char java.lang.String.charAt(int index)

それから、BufferedReader を使うと改行が消えるのでご注意あれ。

318:デフォルトの名無しさん
08/08/19 19:39:19
String.toCharArray()っていうそのまんまなメソッドもあるよ!


319:デフォルトの名無しさん
08/08/19 21:19:33
BufferedReader#read(char[] cbuf, int off, int len)じゃイカンのか

320:316
08/08/19 21:23:12
ありがとうございます。アドバイスを踏まえ以下のように改良したのですが、
1行しか読み込むことができません。バッファを使っているせいかとも思ったのですが、バッファを消すとエラーになってしまいます。
public class Main{
public static void main(String[] args){
List<String[]> list =new ArrayList<String[]>();
Char cell[]=new Char[1000];
try{
FileReader fr =new FileReader("test.txt");
BufferdReader bf =new BufferedReader(fr);
String st =bf.readLine();
for(int i=0;i<100;i++){
cell[i]=st.charAT(i);
System.out.print(cell[i]);}
}catch(IOException e){}}}

321:デフォルトの名無しさん
08/08/19 22:15:13
readLineを1回しか呼んでないような気がするが

322:320
08/08/19 22:48:51
>>321
確かに・・そうですね・・
でも、どうすればいいでしょう・・;;

323:デフォルトの名無しさん
08/08/19 23:23:47
ファイル全体を1個のchar配列にすればいいのか?これでどう?

BufferedReader reader = new BufferedReader(new FileReader("test.txt"));
StringBuffer buffer = new StringBuffer();
int c;
while ((c = reader.read()) != -1) {
buffer.append((char) c);
}
reader.close();
char[] array = buffer.toString().toCharArray();

324:320
08/08/19 23:39:07
>>323
一文字ずつを一つ一つの配列に入れたいです。100文字あったら100個の配列に入れるようなイメージです。
ソースプログラムありがとうございます。書いてある事はある程度理解できたのですが、分からないところもありました。
System.out.print(array); と加えたのですが、何も表示されず(´・ω・`)という顔をしてしまいました。
何を出力すれば良かったのでしょうか

325:デフォルトの名無しさん
08/08/19 23:42:03
配列はそのままprintlnしても中身は出ない
System.out.println(Arrays.toString(array));

326:325
08/08/19 23:48:01
って、ウソでした
試してみたら普通に出たorz

test.txtの中身がないとか?

327:320
08/08/20 00:00:25
何故かうまくいきません・・
よろしければソースを丸ごとコピペしたいので、貼り付けて貰えませんか?
一番最初の宣言からです。

328:デフォルトの名無しさん
08/08/20 00:15:03
>>327
どーぞ
URLリンク(rg550.hp.infoseek.co.jp)

329:320
08/08/20 00:31:02
>>328
ありがとうございます。できました!
とても助かりました。

宣言のところで、いつもchar array []としていたのですが、char [] arrayも同じなんですね。

330:デフォルトの名無しさん
08/08/20 00:34:33
>>329
というより、後者が推奨。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch