【初心者】Java質問・相談スレッド123【歓迎】at TECH
【初心者】Java質問・相談スレッド123【歓迎】 - 暇つぶし2ch823:デフォルトの名無しさん
09/02/17 23:14:55
public class BitTest {
public static void main(String[] args) {
long i = 0;

for (i = Byte.MIN_VALUE; i <= Byte.MAX_VALUE ; i ++) {
bittest((byte)i);
}

for (i = Integer.MIN_VALUE; i <= Integer.MAX_VALUE ; i ++) {
bittest((int)i);
}
}
public static void bittest(byte B_) {
byte c1 = (byte)((B_ & 0xFE) & 0xFF);
byte c2 = (byte)((B_ & 0xFE));

if (c1 != c2) {
System.out.println("error byte " + B_);
throw new RuntimeException();
}
}
public static void bittest(int B_) {
int c1 = (B_ & 0xFE) & 0xFF;
int c2 = (B_ & 0xFE);

if (c1 != c2) {
System.out.println("error int " + B_);
throw new RuntimeException();
}
}
}

824:823
09/02/17 23:16:23
2つのビット演算の結果が違ったら例外投げて終了するコードを書いてみた

動かしてみれば一発じゃんって事で動かしたが、エラーでないまま最後まで通ったよ

825:823
09/02/17 23:17:35
dojaが何か分かってないんで、見当違いのことしてたらごめんだぜ

826:813
09/02/17 23:49:34
>>821
スマソ、適切にキャストしたらエラー出んかった…
エラーが出たのはキャストしてなかったからだった…
B_がbyteの場合は、

B_=(byte)((B_&0xFE)&0xFF);
B_=(byte)(B_&0xFE);

ダッタ。で、&0xFEの時点ですでに8~31までの上位ビットは切り捨てられているわけだから、
&0xFEの後に&0xFFしても意味ないはず…。
ていうか>>823スゲェな…。

すべてはiモード携帯電話用~スレの69の発言がおかしいんじゃねーかw
69め…ブツブツ。

827:デフォルトの名無しさん
09/02/17 23:56:40
0xFFってint型に突っ込むと
-1として解釈されるパターンと255として解釈されるパターンがあるから……

ってどっちでもビット演算的には同じか。

828:デフォルトの名無しさん
09/02/18 00:29:13
ところで、>>823の何がすごいのか書き残してから巣に帰ってくれないか?

829:823
09/02/18 00:42:53
お世辞だよね

830:デフォルトの名無しさん
09/02/18 00:46:06
どなたか>>818の答えをお願いします・・・

831:811
09/02/18 00:46:41
おお皆様ありがとうございます。
やっぱり結果的には一緒っぽいですよね…


832:デフォルトの名無しさん
09/02/18 01:55:17
>>830
キャスト

833:デフォルトの名無しさん
09/02/18 09:21:18
サーブレットでログ出力関数を作ろうと思うのですが
同期させるには以下のコードでよいですか?

public class Util {

 private static Object lock = new Object();

 public static void outputLog(String msg) {

  synchronized (lock) {
   System.out.println(msg);
  }

 }
}


834:デフォルトの名無しさん
09/02/18 09:48:02
printlnを一切ほかのところに書かずに全部それで統一できるならね

835:デフォルトの名無しさん
09/02/18 09:51:57
>>834
なるほど!

836:デフォルトの名無しさん
09/02/18 12:21:08
>>833
自分で作らないで java.util.logging を使ってあげてください。


837:デフォルトの名無しさん
09/02/18 13:13:28
自分の銀行口座に振り込まれたログをJAVAを用いて管理したいのですがそのようなAPIを公開している銀行又はライブラリはありますか?
分かる方がいらっしゃったら返答お願いします

838:デフォルトの名無しさん
09/02/18 13:22:01
透明なJFrame,もしくはJWindowを作成したいと思っています。
java6から利用可能と聞きました。
JAVA FXは利用しないやり方を知りたいです。
よろしくお願いします。

839:デフォルトの名無しさん
09/02/18 13:36:00
>>837
危険だから公開はしないと思うぞ。
でもMicrosoftMoneyに取り込める所はあるから、
同じプロトコルを使えば可能なのかも。

840:デフォルトの名無しさん
09/02/18 13:41:51
>>838
update10以降とかじゃなかったっけ?
AWTUtilties#setWindowOpacity(Window,float)とかだったと思う。

841:デフォルトの名無しさん
09/02/18 13:55:09
>>832
総称型を使ってるからキャストはいらないんじゃね?
>>818のソースで動いてるし、問題あるか知りたいんだろ。

842:デフォルトの名無しさん
09/02/18 14:09:43
>>841
大丈夫っぽいね

無検査~はジェネリック使わないとバシバシ警告だしてきてウザイやね

843:830
09/02/18 15:29:47
>>832
馬鹿は回答しないでください><

844:デフォルトの名無しさん
09/02/18 16:00:25
プログラミング自体はじめたばかりの初心者です

      BBSをListで作る練習をしていて、例題に

      public Writing[] list() throws BbsException{
              ~~~~~~~~~~~~~~~
      }

      という記述があったのですが、波線のところはどういうことをしているのでしょうか?
      Writingクラスは別にあります。


845:デフォルトの名無しさん
09/02/18 16:05:44
何かしてるわけじゃないです
戻り値はWriting[]型で引数なしのlistという名前のメソッドを定義しますよと伝えてるだけです

846:884
09/02/18 16:27:00
なるほど

ありがとうございました。

847:デフォルトの名無しさん
09/02/18 17:13:37
java教科書くらい読めよ

848:デフォルトの名無しさん
09/02/18 21:55:11
浮動小数点演算について質問です。
例えば単純な引き算で、1.0 - 0.8 = 0.19999・・ となってしまいますが
これを解決するのに BigDecimalを使うというのをネットで見つけました。
でも単純な引き算を行うのにも以下のようにどのような演算をしてるのがわかり難くなってしまいました。
new BigDecimal(String.valueOf(1.0)).subtract(・・・)

浮動小数点演算で丸めがおこらないようにするには
このようなわかり難いコーディングがデフォなのでしょうか?
何か良い方法がありましたら教えてくださいm(_ _)m

849:デフォルトの名無しさん
09/02/18 23:15:32
>>848
多数派:誤差があっても気にしない。
神経質な業界:言語自体、十進演算をする実装のものを選ぶ。
科学技術:誤差込みで計算した上で、きちんと誤差管理する。
ってところかなあ。

850:デフォルトの名無しさん
09/02/18 23:18:13
>>843
質問しといておまえは何様のつもりだ?

851:デフォルトの名無しさん
09/02/18 23:40:25
>>848
あくまでJavaだけしか使えないなら
URLリンク(eval.dev.java.net)
みたいに計算式をパースしてやる手法ぐらいしか知らん。

852:デフォルトの名無しさん
09/02/18 23:45:46
つかったことないけど
new BigDecimal("1.0").subtract(・・・)
てすればいいんじゃないのかな?

853:デフォルトの名無しさん
09/02/18 23:46:19
普通はDecimalFormatかFormatterを使う。

854:デフォルトの名無しさん
09/02/18 23:53:54
>>848
必要な桁で丸めるとか、
あらかじめゲタを履かせる(10倍して演算後、10で割る)とか。


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