トップページ⇒tech
1001コメント349KB

【初心者】Java質問・相談スレッド75【大歓迎】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/11/13(日) 14:48:57
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/

これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals を使え。
・内部クラスから外部クラスのローカル変数は使えない。他の方法を考えろ。

前スレッド
【初心者】Java質問・相談スレッド74【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1130315416/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/

次スレは>>980あたりでお願いしまする。
0153デフォルトの名無しさん2005/11/16(水) 02:55:18
すいません。
DAOとvalueobjectなんですが?
実行したときに、serchingがかかって、type一覧が出力されるのですが?
どれを選んでいいのかわかりません。
0154デフォルトの名無しさん2005/11/16(水) 03:02:17
>>152
ちなみに、何を作るために必要なんだ?
0155デフォルトの名無しさん2005/11/16(水) 03:08:10
今。参考書見ながらEclipse勉強しています。
postgresからデータを引っ張るためです。
0156デフォルトの名無しさん2005/11/16(水) 03:54:33
Java だって、下手糞に書けばメモリリークくらい出来ますよ
0157デフォルトの名無しさん2005/11/16(水) 05:57:06
Sun Java Studio Enterprise 8ってどうなの?
ずっとeclipse3でコード書いてきてそこまで不満は
無いんだけど・・・・デモ見る限りかなりの出来と
思うんだけど・・・・・
0158デフォルトの名無しさん2005/11/16(水) 08:50:54
NetBeansベースだからできはいい
0159sage2005/11/16(水) 10:16:34
>>152 ホレ今思いついたままに書いてみたぞ。
そんな物が必要だと思ったことは一度もないけどな。
import java.util.HashSet;
import java.util.Set;
public class UnGabage {
  public UnGabage() {
    instSet.add(this);
  }
  public void delete(){
    instSet.remove(this);
  }
  static Set instSet = new HashSet();
}
0160デフォルトの名無しさん2005/11/16(水) 10:29:45
ta.setComponentPopupMenu(popup);
popup.addPopupMenuListener(new PopupMenuListener() {
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
copy.setEnabled(ta.getSelectionStart() != ta.getSelectionEnd());
cut.setEnabled(ta.getSelectionStart() != ta.getSelectionEnd());
}
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {}
public void popupMenuCanceled(PopupMenuEvent e) {}
});
は何をしているのでしょうか?急ぎなので簡単にお願いします、¥すみません
0161デフォルトの名無しさん2005/11/16(水) 10:32:27
>>151
>すいません、右も左もわからない初心者なもので・・・
お箸を持つ方が右で、茶碗が左だろ?
これだから初心者は・・・
0162デフォルトの名無しさん2005/11/16(水) 11:11:51
>>161
左利きかもしれないけどな。
これだから初心者は・・・
0163デフォルトの名無しさん2005/11/16(水) 11:17:00
左利きのプログラマーなんていない
0164デフォルトの名無しさん2005/11/16(水) 12:01:32
>>159
ダウト
0165デフォルトの名無しさん2005/11/16(水) 12:09:27
>>152はSoftReferenceの使いかたも知らないアホということで
01661102005/11/16(水) 12:18:29
レスが遅れてすいません、JAVAでIPv6プログラミングをしたいと言っていたものです。

あれから色々調べてみたところ、以下のページが見つかりました。

http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/net/properties.html

多分ここらへんのプロパティをデフォルトから変更すればできると思うんですが、変更の仕方がわかりません。ちなみに

Properties p = System.getProperties();
p.list(System.out);

みたいなコードを書いたら、上のページのようなプロパティは見当たりませんでした。
0167デフォルトの名無しさん2005/11/16(水) 12:20:25
>>166
無ければ自分でセットすれば
01681662005/11/16(水) 12:36:05
>>167
え?そんなことできるんですか?
01691262005/11/16(水) 12:41:42
>>129
遅レスすみません、まさに希望どおりになりました。
TabItemはCompositeの子ではないので、TabItem1つ1つにCompositeを
割り当ててやる必要があるのですね。
ありがとうございました。
0170デフォルトの名無しさん2005/11/16(水) 12:53:00
>>168
System.setPropertyというのがあるのだが。。。

あと、ここの下のほうを読んでみ
ttp://www.hellohiro.com/systemproperty.htm
0171デフォルトの名無しさん2005/11/16(水) 12:53:16
>>160
ポップアップメニューの登録。
ポップアップメニューが表示されるときに、ta(=テキストエリア?) で選択されてれば、
(ポップアップメニューの?)copy と cut を有効にする。そうでなければ copy と cut は無効。
01721662005/11/16(水) 12:55:21
>>167
すみません、できました…。が結局変わりません。システムプロパティを見てみると

java.net.preferIPv6Addresses=true
java.net.preferIPv4Stack=false

になっていますが、システムプロパティ変更後のソースに

InetAddress ia[] = InetAddress.getAllByName(args[0]);
for(int i = 0;i < ia.length;i++)
System.out.println(ia[i]);

として引数にlocalhostと入れても出力は

localhost/127.0.0.1

となってしまいます…。
0173デフォルトの名無しさん2005/11/16(水) 13:08:26
>>172
1.4.2 だと InetAddress の staticイニシャライザでシステムプロパティ見て設定してる、
だから、一旦 InetAddress を使った後では System.setProperty とかやっても無駄。
0174デフォルトの名無しさん2005/11/16(水) 13:16:43
>>172
普通、localhostは、当たり前のように127.0.0.1のループバックだと思うんだが。
マシン名渡してみれ。
0175デフォルトの名無しさん2005/11/16(水) 13:26:58
>>173のような事情だと、javaのコマンドラインで
-Djava.net.prefer...ってやらないとダメなんでないかい。
01761722005/11/16(水) 13:27:00
>>173
すみません、勉強不足のためよくわかりません…。とりあえずソースを載せます。

import java.net.*;
import java.util.*;
import java.io.*;
class a{
public static void main(String args[]){
try{
FileInputStream propFile = new FileInputStream("b.properties");
Properties p = new Properties(System.getProperties());
p.load(propFile);
System.setProperties(p);
System.getProperties().list(System.out);
InetAddress ia[] = Inet6Address.getAllByName(args[0]);
for(int i = 0;i < ia.length;i++)
System.out.println(ia[i]);
}catch(Exception e){
}}}

プロパティファイルb.propertiesも載せます。

java.net.preferIPv6Addresses=true
java.net.preferIPv4Stack=false

ちなみにOSはFreeBSD5.4RELEASE-p8です。

>>174
マシン名を渡してもダメでした…。
0177デフォルトの名無しさん2005/11/16(水) 13:35:53
>>176
うちだと動くよ。

%uname -a
FreeBSD home.dangan.local 5.4-RELEASE-p7 FreeBSD 5.4-RELEASE-p7 #1: Thu Oct 27 17:40:13 JST 2005 root@******:/usr/obj/usr/src/sys/******* i386
%cat test.java
import java.net.*;

public class test {
public static void main(String[] args) throws Exception {
System.setProperty( "java.net.preferIPv6Addresses", "true" );
InetAddress addresses[] = InetAddress.getAllByName("localhost");
for( int i = 0 ;i < addresses.length ; i++){
System.out.println(addresses[i]);
}
}
}
%javac test.java
%java -showversion test
java version "1.4.2-p7"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-p7-root_12_sep_2005_03_09)
Java HotSpot(TM) Client VM (build 1.4.2-p7-root_12_sep_2005_03_09, mixed mode)

localhost/0:0:0:0:0:0:0:1
localhost/127.0.0.1
0178デフォルトの名無しさん2005/11/16(水) 13:40:31
>>176
うちでも動いた
0179デフォルトの名無しさん2005/11/16(水) 13:41:01
IPv6がちゃんとインストールされていないとか
01801722005/11/16(水) 13:57:15
>>177-179
うわ…。177氏のソースをそのまま動かしてみたところ動きませんでした…。
最後のjava -showversion testの出力結果を載せます。

java version "1.4.2-p7"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-p7-root_20_oct_2005_13_24)
Java HotSpot(TM) Client VM (build 1.4.2-p7-root_20_oct_2005_13_24, mixed mode)

localhost/127.0.0.1

ifconfigの結果を見るとfxp0のinet6にv6アドレスはついてます。(リンクローカルとグローバルの二つ)

>>179
IPv6って明示的に何かをインストールすべきなのでしょうか??
0181デフォルトの名無しさん2005/11/16(水) 14:05:05
>>180
jdk14 を make するときに、WITH_IPV6 してなかったとか?
01821722005/11/16(水) 14:10:56
>>181
あまり覚えてませんが可能性はありますね…。それって調べる方法あるんですかね?

あともしそれを入れるとしたら一回deinstallしてからreinstallですかね?
0183デフォルトの名無しさん2005/11/16(水) 14:22:40
>>172
明示的にIPV6のほう使ったら?
0184デフォルトの名無しさん2005/11/16(水) 15:24:13
Java初心者ですが、Javaを使って下記の様なメニューリストを作成したいと思っています。

↓こっちのメニュー(リンク)にカーソルを合わせる
┌─┐┌───┐
├─┤│     │
├─┤│     │
├─┤│     │
└─┘└───┘
↑こっちに説明&リンク表示(最初から文章)

<外部CSS>
#left{float:left(以下略)}
#infospace{省略}

<head>〜</head>内
<script language="javascript">
<!--
function p(x) {document.getElementById('text').innerHTML=x;}
-->
</script>

<body>〜</body>内
<div id="menulist"><table><tr><td onmouseover="this.style.backgroundColor='#ffffff'" onmouseout="this.style.backgroundColor=''">
<a href="左側のリンクURL" onMouseOver="p('右側に表示される説明')">左側に表示されるリンク</a></div></td></tr></table>
<div id="infospace">右側のエリアに最初から表示される文章</div>

としたのですが、右側のエリアにリンクを貼る事ができません。

1、左側のメニューは全てリンクです。
2、右側のエリアには最初から説明文を表示させます。
3、左側の各リンクにカーセルを合わせた時に、右側のエリアに説明を表示させ、
なおかつ説明内にリンクを設置したいのです。
0185デフォルトの名無しさん2005/11/16(水) 15:27:15
>>1ミロ
0186デフォルトの名無しさん2005/11/16(水) 15:30:37
板違いでしたか…スミマセンorz
01871722005/11/16(水) 15:38:51
>>183
すみません、どういう意味ですか??

とりあえず今jdkをインストールしなおしてます…。
portsからmakeしているのですが、オプションにWITH_IPV&というのがありました。
これってmake installするときに指定するものなんですか?それとも途中でオプションの指定画面のようなものが出るのでしょうか?
0188デフォルトの名無しさん2005/11/16(水) 15:49:11
>>187
まずネットワークインターフェースの列挙からしてみたらという意味だ

環境がようわからんのでな
01891722005/11/16(水) 15:51:48
>>188
なるほど、とりあえず今jdkをdeinstallしてしまったので、また入ったらやり直してみます。
0190デフォルトの名無しさん2005/11/16(水) 15:58:56
deinstallって初めて聞いた
0191デフォルトの名無しさん2005/11/16(水) 16:03:01
>>187
make -DWITH_IPV6=yes とかしときゃよかったような。
jdk14 はオプションの設定画面は出なかったと思われ。
0192デフォルトの名無しさん2005/11/16(水) 16:04:00
>>182
あるのかもしれんが、俺は知らない。
もしあったら教えてくれ。
0193デフォルトの名無しさん2005/11/16(水) 19:34:11
非推奨はアノテーションとJAVADOCの両方に記述すべきですか?
二重記述でなんかいやなんですが…
0194デフォルトの名無しさん2005/11/16(水) 20:02:53
アプレットでゲーム(キーボードイベントを用いて)を造っているのですが、

アプレットビューアでアプレットを起動
    ↓
アプレットの領域内をマウスでクリック
    ↓
キーボードが機能する (キーを入力するとその結果がアプレットに表示される)


領域内をマウスでクリックが嫌だったので、 init(); に setFocusable(true); を追加すると
アプレットビューアでアプレットを起動後、領域内をマウスでクリックしなくてもキーボードは機能してくれました。

その後、インターネット上に、アプレットを公開したのですが
アプレットビューアでは出来たはずの、領域内をマウスでクリックしなくてもキーボードは機能する。が出来ず、
一度領域内をマウスでクリックしなければ、キーボードが機能してくれませんでした。

インターネット上で、アプレットの領域内をマウスでクリックせずにキーボードが機能してくれるようにする
にはどうすればよいでしょうか?

文字が多くてスミマセンでした。
お願いします。
0195デフォルトの名無しさん2005/11/16(水) 20:12:49
すみません、どうしても分からないので質問させてください。
String型の文字列を int 型に直したいのですが。
コンパイルは通りますが、以下のようなエラーが起きます。
エラー箇所は Byte byt = new Byte(str); でエラーが起きているとでます。

java.lang.NumberFormatException : Value out of lange. Value : "250" Radix : 10

ソースは以下のとおりです(切り抜き)

str = strPool.substring(bigin, end);
System.err.println("str = " + str);
Byte byt = new Byte(str);
return byt.intValue();

str は String str; として定義されています。
System.err.println(); によって出力してみたところ、 str には "250" が入っています。
調べてみたところ127以下の数字なら無事変換できるのですが、128以上だと上記のようなエラーが起こります。
あ、ここまで書いて気づいたのですが、もしや Byte って1バイト以上の数字が扱えないから、128以上ではエラーが
起こるのでしょうか?
0196デフォルトの名無しさん2005/11/16(水) 20:16:46
おめでとう
0197デフォルトの名無しさん2005/11/16(水) 20:17:01
byteは-128〜127だ
0198デフォルトの名無しさん2005/11/16(水) 20:43:08
>>195
byte配列にするクラスメンバ関数がStringにあったと思うが。
getBytes()だっけか?
0199デフォルトの名無しさん2005/11/16(水) 20:45:45
>>195
strに"127"を入れてエラーにならなかったら
その仮説で良いと思うけど
0200デフォルトの名無しさん2005/11/16(水) 20:47:44
>>195
なぜ、Byteを使う?
0201鯖男2005/11/16(水) 20:49:06
どなたか教えてください。
マルチクライアント非対応サーバになんとしても接続したい場合

InetSocketAddress socketAddress =
new InetSocketAddress("localhost", 1234);
Socket socket = new Socket();
while ((socket.isConnected()) == false) {
try {
socket.connect(socketAddress,0);
} catch (IOException e) {
System.out.println("未接続");
}
}

のようなコードではダメなのはなぜでしょうか?
0202デフォルトの名無しさん2005/11/16(水) 20:49:30
つーかよintにしたいだけなら

int i = Interger,parseInt(str);

でおわりだろ
0203デフォルトの名無しさん2005/11/16(水) 20:59:54
>>199
仮説って……

http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/Byte.html#Byte(java.lang.String)
> 文字列は、基数 10 で parseByte メソッドを使用するのと同じように byte 値に変換されます。

http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/Byte.html#parseByte(java.lang.String,%20int)
> 以下に挙げる状況のどれかが発生した場合に、NumberFormatException 型の例外がスローされます。
> ・文字列によって表される値が、byte 型の値ではない
0204デフォルトの名無しさん2005/11/16(水) 21:03:39
つっこむべき所はbiginだと思うの
0205デフォルトの名無しさん2005/11/16(水) 21:10:59
>>204
すげー観察力
0206デフォルトの名無しさん2005/11/16(水) 21:24:51
わざわざByteを使っている理由は、ただ単に私が初心者で
StringをIntにしたいと思い、ドキュメント眺めてたら
たまたま最初にByteをみつけたから使っていました。

>>204
(( ゜д゜))ガーン
スペルミス
0207デフォルトの名無しさん2005/11/16(水) 22:09:05
オートボクシングとか働くから、プリミティブ型とオブジェクト型、あまり区別しなくていいかもね。
多態性で問題が生じることはあるかもしれないけどー。
0208デフォルトの名無しさん2005/11/16(水) 22:10:26
yield文とはどういうものなのですか?
0209デフォルトの名無しさん2005/11/16(水) 22:26:22
>>208
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/Thread.html#yield()
これか?
0210デフォルトの名無しさん2005/11/16(水) 22:27:31
日本語扱うならbyteが基本だけどな。
Strは入力も出力もUTF-8で統一してないと問題が発生する。
ありがちなのがメール(ISO2022JP)との入出力で問題発生。

SunがUTF-8以外でも非破壊で扱えられる様にStrを拡張してくれないと困る。
0211デフォルトの名無しさん2005/11/16(水) 22:40:22
>>210
UTF-8?
何をお馬鹿なことを書いてる?
Java StringはSJISでもEUCでも何でも扱えるよ
API見直せ
0212デフォルトの名無しさん2005/11/16(水) 22:56:01
>>211
入出力の時に変換しているだけで内部は常にUNICODEだったはず
0213デフォルトの名無しさん2005/11/16(水) 23:03:57
UTF-8で統一しても問題が発生することがあるよ
文字コードとUnicodeのマッピングの関係で
0214デフォルトの名無しさん2005/11/16(水) 23:30:32
つーか、MS932かそれ以外でだな

しかもMS932が一番シェアあるもんだから厄介だという
02151892005/11/16(水) 23:48:28
レスが遅くなってすみません。javaでWITH_IPV6オプションを入れようとしていたものです。

先ほど一回jdk14をdeinstallしたあと

# make -DWITH_IPV6=yes install

と打ったのですが、177氏のテストプログラムが動きませんでした。(v4アドレスしか出てきませんでした。)とりあえずもう一度jdkをdeinstallしました。WITH_IPV6オプションを指定する方法を色々調べたところ

# make CFLAGS+=WITH_IPV6 install

とあったのですが、これが正しいのでしょうか?
0216デフォルトの名無しさん2005/11/16(水) 23:55:15
>>75
Javaに「タスク」なんて用語なはないのでイマイチ意味があいまいだが
synchronizedで排他しない限り
どのメソッド内(コンストラクタも含む)のコードも別スレッドで同時に
動く可能性はある。
0217デフォルトの名無しさん2005/11/17(木) 00:12:13
超初心者で、今日から始めた者ですが…
コンパイルの時に

警告: この文字は、エンコーディング MS932 にマップできません。
\0 は不正な文字です。

と沢山出て困っています。
全文字を半角に書いた上でやっているのですが…
0218デフォルトの名無しさん2005/11/17(木) 00:14:13
>>201
どなたかお願いします。
0219デフォルトの名無しさん2005/11/17(木) 00:30:08
>>215
FreeBSDは使ってないが、
# make CFLAGS+=-DWITH_IPV6 install
だと思うぞ。
0220デフォルトの名無しさん2005/11/17(木) 00:31:21
>>217
ソースコードをWindowsのメモ帳でUnicodeで保存してないか?
0221デフォルトの名無しさん2005/11/17(木) 00:33:46
>>201
そのコードで動きそうなもんだが、何がダメなんだ?
0222デフォルトの名無しさん2005/11/17(木) 00:34:18
>>215
ちょっと試してみる。

#make clean ; make -DWITH_IPV6=yes patch
===> Cleaning for rpm-3.0.6_10
===> Cleaning for unzip-5.52_2
(中略)
===> Applying extra patch /usr/ports/java/jdk14/files/disable-ipv6.patch
===> Applying FreeBSD patches for jdk-1.4.2p7_2

あ、ダメだ。disable-ipb6.patch が当たってる。

# make clean ; make CFLAGS+=WITH_IPV6 patch
===> Cleaning for rpm-3.0.6_10
===> Cleaning for unzip-5.52_2
(中略)
===> Applying extra patch /usr/ports/java/jdk14/files/disable-ipv6.patch
===> Applying FreeBSD patches for jdk-1.4.2p7_2

これもダメみたい。

#make clean ; make -DWITH_IPV6 patch
===> Cleaning for rpm-3.0.6_10
===> Cleaning for unzip-5.52_2
(中略)
done
===> Applying FreeBSD patches for jdk-1.4.2p7_2

これなら大丈夫っぽい。
0223デフォルトの名無しさん2005/11/17(木) 01:08:52
初心者ですすいません。
org.apache.jasper.JasperException: JSPのクラスをコンパイルできません
理由はなぜなんでしょうか?
0224デフォルトの名無しさん2005/11/17(木) 01:12:43
TreeNode型の変数のノード名をString型で取りたいのですが、
Node型のgetNodeName()の様な関数も見当たらず、お手上げな状態です。
どなたかご教授願えますでしょうか?
02251892005/11/17(木) 01:14:04
>>222
わざわざありがとうございます!それで今試しているところです。結果がわかり次第また書き込みます。一つ質問があるのですが、make patchということはそれが終わったあとmake installを行うことでインストールが終了するということですよね?
0226デフォルトの名無しさん2005/11/17(木) 01:18:39
org.apache.jasper.JasperException: JSPのクラスをコンパイルできません
なぜですか?
02272172005/11/17(木) 01:24:23
>>220
ありがとうございます!
ANSIで保存したところ、無事にコンパイルできました。
0228デフォルトの名無しさん2005/11/17(木) 01:31:06
>>223
org.apache.jasper.JasperException: Unable to compile class for JSP
でググれ
02292012005/11/17(木) 01:40:20
>>221
サーバが他のクライアントと接続を切ってすかさずListenに入って
いるのですが、このコードではwhileを抜けれずループしっぱなし
になるんです。
0230c言語初心者2005/11/17(木) 02:03:48
コマンドライン引数で指定した解像度と明るさのPPM画像ファイルを生成する。
/*

#include <stdio.h>
#include <stdlib.h>
#include “ppm.h” /*PPM画像ファイル処理関数ライブラリ*/

Int main(int argc,char *argv[])
{
FILE *fpout; /*出力ファイルポインタ*/
unsigned char *buf; /*画像データバッファへのポインタ*/
int width; /*画像の幅*/
int height; /*画像の高さ*/
int br; /*画像の明るさ*/
int i,j         /*注目ピクセルの座標(横、縦) */
int k; /*注目ピクセルの先頭からの位置*/
0231c言語初心者2005/11/17(木) 02:12:47
質問というよりプログラムが長いのでいくつかに分けて書き込みます。
下記の二つのプログラムをまとめて一つにするには、どうしたらよいですか?
/*
コマンドライン引数で指定した解像度と明るさのPPM画像ファイルを生成する。
/*

#include <stdio.h>
#include <stdlib.h>
#include “ppm.h” /*PPM画像ファイル処理関数ライブラリ*/

Int main(int argc,char *argv[])
{
FILE *fpout; /*出力ファイルポインタ*/
unsigned char *buf; /*画像データバッファへのポインタ*/
int width; /*画像の幅*/
int height; /*画像の高さ*/
int br; /*画像の明るさ*/
int i,j         /*注目ピクセルの座標(横、縦) */
int k; /*注目ピクセルの先頭からの位置*/
0232c言語初心者2005/11/17(木) 02:13:38
/*コマンドライン引数の個数チェック*/
if(argc<5){
printf(“Usage:%s<outfile><width><height><bright>\n”,argv[0]);
exit(0);
}

/*コマンドライン引数で指定されたファイルをバイナリ書き込みモードでオープン*/
if(NULL==(fpout = fopen(argv[1],”wb”))){
printf(“%sをオープンできません\n”,argv[1]);
exit(-1);
}

/*画像の横幅を取得*/
Sscanf(argv[2],”%d”,&width);

  if(width <=0){
printf(“画像の横幅の指定が不正です\n”);
exit(-1);
}

/*画像の高さを取得*/
sscanf(argv[3],”%d”,&height);
if(height <=0){
printf(“画像の高さの指定が不正です\n”);
exit(-1);
0233c言語初心者2005/11/17(木) 02:15:23
}
/*画像データバッファを取得*/
if(NULL==(buf = malloc(width*height*3*sizeof(unsigned char)))){
printf(“画像データバッファの取得に失敗しました\n”);
exit(-1);
}

/*画像データバッファに画像データを書き込む*/
for(j = 0;j < height; j++){
for(i = 0; i <width; i++){
k = (i+j*width)*3;
buf[k+0] =(unsigned char)br;
buf[k+1] =(unsigned char)br;
buf[k+2] =(unsigned char)br;
}
}

0234c言語初心者2005/11/17(木) 02:16:23
/*PPMヘッダーをファイルに出力*/
put_ppm_header(fpout,width,height,PPM_DEPTH);

/*画像データバッファの内容をファイルに出力*/
fwrite(buf,width*height*3*sizeof(unsigned char),1,fpout);

/*画像データバッファを解放*/
free(buf);

/*ファイルクローズ*/
fclose(fpout);


retrun0;
ここまでが一つで、
0235c言語初心者22005/11/17(木) 02:20:22
/*
PPM画像の平均輝度を算出する。
*/


#include <stdio.h>
#include <stdlib.h>
#include “ppm.h” /*PPM画像ファイル処理関数ライブラリ*/

/*ピクセルのRGB各要素から,輝度を求める*/
int brightness(unsigned char *dat)
{
unsigned int r,g,b;
unsigned int br; /*ピクセルの輝度*/

r=(unsigned int)dat[0];
g=(unsigned int)dat[1];
b=(unsigned int)dat[2];

br=(77*r+151*g+28*b)/256;

return(int)br;
}
0236c言語初心者22005/11/17(木) 02:22:36
r=(unsigned int)dat[0];
g=(unsigned int)dat[1];
b=(unsigned int)dat[2];

br=(77*r+151*g+28*b)/256;

return(int)br;
}

Int main(int argc,char*argv[])
{
FILE*fpin; /*入力ファイルポインタ*/
unsigned char*buf; /*画像データバッファへのポインタ*/
int header_len; /*画像データのヘッダのバイト数*/
int width; /*画像の幅*/
0237c言語初心者22005/11/17(木) 02:23:50
int height; /*画像の高さ*/
int depth; /*画像のデータ最大値*/
int br; /*ピクセルの輝度*/
int sum; /*輝度値の合計*/
double br_mean; /*平均輝度*/
int i,j; /*注目ピクセルの座標(横、縦)*/
int k; /*注目ピクセルの先頭からの位置*/

/*コマンドライン引数の個数チェック*/
if(argc<2){
printf(“Usage:%s<infile>\n”,argv[0]);
exit(0);
}

/*入力ファイルをバイナリ読み取りモードでオープン*/
if(NULL==(fpin = fopen(argv[1],”rb”))){
printf(“%sをオープンできません\n”,argv[1]);
exit(-1);
}
0238c言語初心者22005/11/17(木) 02:24:44
/*入力ファイルのヘッダ情報を取得*/
header_len = read_ppm_header(fpin,&width,&height,&depth);
/*ヘッダが不正な場合は終了*/
if(header_len < 0){
printf(“入力ファイルのヘッダが不正です\n”);
exit(-1);
}

/*画像データバッファを取得*/
in(NULL==(buf = malloc(width*height*3*sizeof(unsigned char)))){
printf(“画像データバッファの取得に失敗しました\n”);
exit(-1);
}

/*画像データの本体をバッファに読み込む*/
fseek(fpin,header_len,SEEK_SET); /*ヘッダの分だけ飛ばす*/
fread(buf,width*height*3*sizeof(unsigned char),1,fpin);

0239c言語初心者22005/11/17(木) 02:25:47
/*バッファ内の画像データの平均輝度を求める*/
sum = 0;
for(j = 0;j < height;j++){
for(i = 0;j < width;i++){
k = (i+j*width)*3; /*j行i列のピクセルはkバイト目*/
br = brightness(buf+k);/*該当ピクセルの輝度*/
sum += br; /*輝度値の総和*/
}
}
br_mean =(double)sum/(double)(width*height);

/*平均輝度を表示する*/
printf(“%sの平均輝度:%lf\n”,argv[1],br_mean);

/*画像データ用バッファを解放*/
free(buf);

/*ファイルクローズ*/
fclose(fpin);

return0;
}
0240c言語初心者22005/11/17(木) 02:27:24
/*バッファ内の画像データの平均輝度を求める*/
sum = 0;
for(j = 0;j < height;j++){
for(i = 0;j < width;i++){
k = (i+j*width)*3; /*j行i列のピクセルはkバイト目*/
br = brightness(buf+k);/*該当ピクセルの輝度*/
sum += br; /*輝度値の総和*/
}
}
br_mean =(double)sum/(double)(width*height);

/*平均輝度を表示する*/
printf(“%sの平均輝度:%lf\n”,argv[1],br_mean);

/*画像データ用バッファを解放*/
free(buf);

/*ファイルクローズ*/
fclose(fpin);

return0;
}
の二つです。長すぎて面倒だと思いますがどなたかお願いします。
0241デフォルトの名無しさん2005/11/17(木) 02:29:40
>>230-240
スレタイよく見ろ
スレ違いで10レス消費かよ…
0242デフォルトの名無しさん2005/11/17(木) 03:01:37
>>230
Javaで全部書き直せ。話はそれからだw
0243デフォルトの名無しさん2005/11/17(木) 06:23:09
MS932って日本語対応してないような。。。

宿題の丸投げかよ(w
0244デフォルトの名無しさん2005/11/17(木) 10:12:38
オブジェクトを丸々コピーするにはどうしたらよいでしょうか?

Hoge a = new Hoge();
Hoge b = new Hoge();

a = b; //これではだめですよね?

a.copyFrom(b); //こんな感じで中身もコピーしたいのですが・・・
0245デフォルトの名無しさん2005/11/17(木) 10:22:52
>>244
cloneメソッドを自分でオーバーライド
0246デフォルトの名無しさん2005/11/17(木) 10:24:58
> MS932って日本語対応してないような。。。
> MS932って日本語対応してないような。。。
> MS932って日本語対応してないような。。。
> MS932って日本語対応してないような。。。
> MS932って日本語対応してないような。。。
> MS932って日本語対応してないような。。。
> MS932って日本語対応してないような。。。

0247デフォルトの名無しさん2005/11/17(木) 10:27:54
>>244
"ディープコピー"でぐぐれ。
02482252005/11/17(木) 11:13:15
JAVAでIPv6プログラミングをしたいと言っていて、WITH_IPV6パッチを当てていたものですw

ようやくできました!!どうやら正解は>>222氏の

# make clean ; make CFLAGS+=WITH_IPV6 patch ; make install

みたいです。これでインストールしなおしたら>>177氏のテストプログラムが正しく動くようになりました。
長い間レスしてくださったみなさん、本当にありがとうございました!
0249デフォルトの名無しさん2005/11/17(木) 11:29:04
自ら作成したbyte[]をzip圧縮し、ファイルにではなく
新たなbyte[]の変数へ置き換えようと思います。
(byte[] planeByteArray →圧縮しサイズ抑制→ byte[] zipedByteArray)

zipファイルは作成する必要がなく、byte[]データの圧縮のみ行えればよいのですが、
ZipEntryクラスのインスタンスを生成する時に指定する、コンストラクタの
引数(ファイル名)は適当な文字列を入れてよいのでしょうか?

それともZipEntryを使わずにデータのみzip圧縮が可能なのでしょうか?
0250デフォルトの名無しさん2005/11/17(木) 11:35:06
>>249
適当な名前
0251デフォルトの名無しさん2005/11/17(木) 11:40:13
>>249
圧縮したいだけ(zipとの互換性いらない)なら、GZIPOutputStream使えば?

蛇足:
plane -> plain
ziped -> zipped
だと思われる。
0252デフォルトの名無しさん2005/11/17(木) 11:41:47
>>250
無能回答者ひっこめ
■ このスレッドは過去ログ倉庫に格納されています