salsberry の回答履歴
- java起動時の日本語引数文字化けについて
java初心者です。 C++ソースからCreateProcess関数を用いてjava.exeを起動し、アプリケーションを起動させるアプリケーションを作成しています。 現在、java側で日本語が文字化けしてしまい、期待する動作が得られていません。 具体的には起動するjavaアプリケーションに引数としてパスを渡しており、そのパスに 日本語が含まれていると文字化けにより解釈できないという状況です。 日本語がアプリケーション内部で正しく利用できるようにはどのようにすれば良いでしょうか。 環境は以下の通りです。 ※情報が足りない等ありましたらお願い致します。。 OS:WindowsXP C++の開発環境:VC6 CreateProcess関数起動時の文字コード:UTF8 java開発環境:eclipse3.5 javaの引数はStringで受けるのですが、java内部ではUTF16らしいので、UTF8で記述された 文字列をUTF16として読むため文字化けしているのかなと調べた結果推測しています。 だとすると、java側で引数で受けた文字列をUTF-8からUTF-16に変換すれば良いのかなと 考えています。 ではその場合どのような処理が必要になるのでしょうか。(String#getBytes()を使う?) 後、javaコンパイル時にエンコードを指定するという方法もあるようですが、その方法は 他へ影響が大きいため、利用できそうにありません。 情報が足りない等あればお願い致します。 ご回答よろしくお願い致します。
- ファイル名を該当フォルダ内から検索して移動
ファイルの振り分けを手動でしているのですが、 手動は大変なのでバッチファイルで自動的に振り分けられるようにしたいです。 C:\振り分け というフォルダがあり、そこにあらかじめ、 【○○】 [△△] □□.txt といった形式にファイル名をリネームしたファイルを移動しておきます。 過去に整理したファイル達がそれぞれA、B、Cフォルダに入っているとします。 振り分けフォルダのファイル名の先頭から "△△]" の部分まで取得した後、 A、B、Cフォルダの中身をそれぞれ検索して、検索条件に一致したファイルがあったのと 同じフォルダにファイルを自動的に振り分けられるようにしたいです。 また、検索してファイルが見つからなければ振り分けないようにしたいです。 よろしくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- gooo1000
- 回答数3
- IEEE754 浮動小数点について
IEEE754 浮動小数点で (-1)~s×1.M ×2(E-127) とありますが、2の指数部のE-127の理由がわかりません。 なぜ、127を引く必要があるのでしょうか? また、仮数部の1.Mとする理由と併せて教えていただけると助かります。 ※べき乗部の指数などの表記がうまく入力できない為、見づらくて申し訳ありません。 アドバイスよろしくお願いいたします。 また、参考サイトなどあれば、リンクお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- abuhiro
- 回答数3
- RandomAccessFile文字列の上書き
ただいまjavaを勉強中で、RandomAccessFileでいろいろやってみているところです。 RandomAccessFileで文字列を読み書きするときは readUTF() と writeUTF() を使うってことでいいんでしょうか? そう思って今やっているのですが、うまくいかないことがあります。 writeUTF() で文字列をいくつか書き込んで、 後で任意の位置の文字列を書き換えようとしています。 で、まず、いくつデータを書き込んだのか調べるために、 readUTF() とカウンタを使って数えようと思ったんですが、 繰り返しの最中にファイルの末尾に達してしまい、終了してしまいます。 さっきまではそれで数えられていた気がしたんですが、 ちょっとどこかをいじった後、できなくなってしまいました。 上書きについては、元のファイルの、任意の位置の手前までデータを読み込んでファイルポインタを進めて その後上書きしたいデータを書き込むようにしました。 全体的によろしくないやり方でしたら、そのあたりも指摘していただけるとうれしいです。 どうぞよろしくお願いします。
- ベストアンサー
- Java
- tamackochi
- 回答数3
- RandomAccessFile文字列の上書き
ただいまjavaを勉強中で、RandomAccessFileでいろいろやってみているところです。 RandomAccessFileで文字列を読み書きするときは readUTF() と writeUTF() を使うってことでいいんでしょうか? そう思って今やっているのですが、うまくいかないことがあります。 writeUTF() で文字列をいくつか書き込んで、 後で任意の位置の文字列を書き換えようとしています。 で、まず、いくつデータを書き込んだのか調べるために、 readUTF() とカウンタを使って数えようと思ったんですが、 繰り返しの最中にファイルの末尾に達してしまい、終了してしまいます。 さっきまではそれで数えられていた気がしたんですが、 ちょっとどこかをいじった後、できなくなってしまいました。 上書きについては、元のファイルの、任意の位置の手前までデータを読み込んでファイルポインタを進めて その後上書きしたいデータを書き込むようにしました。 全体的によろしくないやり方でしたら、そのあたりも指摘していただけるとうれしいです。 どうぞよろしくお願いします。
- ベストアンサー
- Java
- tamackochi
- 回答数3
- 評価の概念について質問
前回も評価の概念について質問しました。ご回答いただいた方へ、誠にありがとうございます。 自分の中でその答えを整理した上で、総仕上げの質問といきます。 質問1:評価とは、「リテラルや変数について、それが『何の表記』で『何の型』で『いくつの(どのような)値』であるかを解釈すること」でしょうか? 例えば、・ソースコード中に 'A' という単語(token)が登場したなら,それは英字表記を用いたchar型の文字値 A だと解釈する 質問2;「式を評価」とは、以下の2つの仮説のうちどちらでしょうか?またどちらでもなければお答え示してくだされば幸いです。 仮説1:「その式を構成する変数やリテラル全てについて、それ等が『何の型』で『いくつの(どのような)値』であるかを解釈すること」 仮説2:仮説1に加え、それ等のリテラルや変数を用いて演算し、答えを求めるプロセスも含む。
- [Java]クラスフィールドのメモリ展開はいつ?
staticの付いたクラスフィールドは、 どのタイミングでメモリに展開されて、また どのタイミングでメモリ上から消えるのでしょうか? 教えて下さい!
- ベストアンサー
- Java
- hakase-chan
- 回答数2
- 入力された文字列を一文字ずつ配列に格納する方法
例えばABCって文字列が入力されたら配列に data[0]="ABC" と格納するのではなく data[0]="A" data[1]="B" data[2]="C" と格納するにはどう書けばいいのでしょうか?
- プログラミング言語について
これはあるプログラムの一部を抜き出したものです。 for(i=0;i<=99;i++) { for(j=0;j<=99;j++) { bmp[i][j][0]=255; bmp[i][j][1]=0; bmp[i][j][2]=0; } } これは、3原色を使っているらしいんですが、 bmp[i][j][0]=255の255の意味が分かりません。 .
- バイト配列 unicode
java初心者です。 以下のソースコードの 「new String(strVal.getBytes("ISO-8859-1"),"JISAutoDetect」 の部分の意味が分からなくこまっています。 <%@ page import="java.io.*" %> <%! public String strEncode(String strVal) throws UnsupportedEncodeingExcception{ if(strVal==null){ return null; }else{ return new String(strVal.getBytes("ISO-8859-1"),"JISAutoDetect")); } } %> そもそも 「バイト配列とは何か」 「なんで必要なのか?」 など、わかりやすく説明していただけると幸いです。
- 継承とメンバ変数にオブジェクトを持つ事の違いは?
現在javaの勉強をしています。 public class ClassX { private ClassY animal = new ClassY(); とするのと public class ClassX extends ClassY { とするのとでは前者の方が 複数のClassYを持てたり、状況によって持たなかったりできるので 便利だと思うのですが、後者を使った方がいい場合はあるのでしょうか? よろしくお願いします。
- ベストアンサー
- Java
- sendmailmagic
- 回答数2
- javaの課題がよくわからないので教えてください。
Shiftを解読し、次のように修正せよ 1.後ろに一つずらす部分の代入の順序を変更することで、 1~4が一つ後ろにずれにように修正せよ 2.右に一つrotateを完成させよ 実行結果 (略)/java Shift 2 3 4 5 5 1 1 2 3 4 2 3 4 5 1 5 1 2 3 4
- このプログラムを解読してください。
これは、楕円の内部と外部に色を塗るプログラムです。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #define MS 200 main() { char fi[50]; int i,j; double x0,y0,a,b; FILE *fp; unsigned short header[13]={0x4d42,54490,1,0,0,26,0,12,0,MS,MS,1,24}; unsigned char bmp[MS][MS][3]; for(i=0;i<=MS-1;i++) { for(j=0;j<=MS-1;j++) { bmp[i][j][0]=0; bmp[i][j][1]=255; bmp[i][j][2]=0; } } printf("中心のx座標:"); fgets(fi,50,stdin); x0=atof(fi); printf("中心のy座標:"); fgets(fi,50,stdin); y0=atof(fi); printf("短径:"); fgets(fi,50,stdin); a=atof(fi); printf("長径:"); fgets(fi,50,stdin); b=atof(fi); for(i=0;i<=MS-1;i++) { for(j=0;j<=MS-1;j++) { if((pow(j-x0,2.0)/pow(a,2.0))+(pow(i-y0,2.0)/pow(b,2.0))<=1) { bmp[i][j][0]=0; bmp[i][j][1]=0; bmp[i][j][2]=255; } } } printf("Input file name:"); fgets(fi,50,stdin); fi[strlen(fi)-1]='\0'; if((fp=fopen(fi,"wb"))==NULL) { fprintf(stderr,"Error: file open [%s].\n",fi); exit(1); } fwrite(header,2,13,fp); fwrite(bmp,1,MS*MS*3,fp); fclose(fp); }
- Rubyの質問です
(1)Rubyプログラムの質問です。 y = ax^3 + bx^2 + cx + d 整数a,b,c,dを読み込んで、xが0から1まで0.1刻みでyの値を求め、印字するプログラムを作っています。 そして、この中でyの値が最小・最大となるときのx,yの値を出力したいのですが、どう求めればよいのかわかりません。 どなたかご教示いただければ幸いです。 (2)もう一つありまして、これもRubyプログラムに関してです。 exp(1) = 1 + 1/1! + 1/2! + ・・・ + 1/n! + ・・・ですが、 この近似式よりexp(1)の値を求めるプログラムの作成の仕方で悩んでいます。 さらにn = 1,2,3・・・10として、近似式を求めるプログラムを作りたいのです。 この問題に関しても、ご存じの方いらっしゃいましたら、ご教示ください。
- 論理演算について質問
int a=1,b=0,c=0のとき a==1 && b==0 || (a==1 && b==0) の論理式あったとします 質問1:&&や||の論理演算子について、その『両側』にある2つの関係式を「1つ1つ評価」することにより論理演算する。この認識で正しいですか? 質問2:論理式 a==1 && b==0 || (a==1 && b==0)について、trueになるプロセスの認識は以下で正しいですか? (a==1 && b==0)のa==1を評価しtrue、次にb==0を評価しtrue。 よってこの論理式はtrue ↓ a==1 && b==0 のa==1 を評価しtrue、b==0 を評価しtrue。 よってこの論理式はtrue ↓ ||は、右の論理式((a==1 && b==0))がtrueで左の論理式(a==1 && b==0 )もtrueだから、論理式全体はtrueで確定しているので、評価を行わない。
- 論理演算について質問
最初に、前回同じ質問に答えてくださった方へ、いろいろな人から僕の仮説のコンセンサスを得たいので、再度同じ質問しますね。 int a=1,b=0,c=0のとき a==1 && b==0 | (a==1 && b==0) a==1 && b==0 &&c==0 && b==0 の2つの論理式あったとします 質問1:&&や||は、その間にある2つの関係式や2つの関係式の論理演算の結果同士などを論理演算するものだと思います。この認識で正しいですか? 質問2:上記の論理式の後者a==1 && b==0 &&c==0 && b==0について、trueになるプロセスの認識は以下で正しいですか? a==1 && b==0 はtrue ↓ 左から2番目の&&は、左の論理式(a==1 && b==0)の演算結果であるtrueと関係式c==0を論理演算(つまり、論理演算の結果trueと関係式の2つを演算)、、結果true ↓ 左から3番目の&&は、左の論理式(a==1 && b==0 &&c==0 )の演算結果であるtrueと右の関係式b==0を論理演算(つまり、論理演算の結果trueと関係式の2つを演算)、結果true 質問3:前者の論理式、a==1 && b==0 | (a==1 && b==0)について、trueになるプロセスの認識は以下で正しいですか? (a==1 && b==0)はtrue ↓ a==1 && b==0 はtrue ↓ |は、右の論理式((a==1 && b==0))の演算の結果trueと左の論理式(a==1 && b==0)の演算結果trueを計算し(つまり論理演算の結果同士であるtrue2つを演算)、結果true
- 論理演算子の変数等を結ぶ個数について質問
int a=1,b=0,c=0のとき a==0 && (b==0 || c==0) a==0 && b==0 || c==0 の2つの論理式あったとします 質問:論理演算子は、必ず「左右2つの変数しかつなげない」のですか? 例えば、前者の論理演算子なら、&&は、a==0とb==0をつないでる。 後者の論理演算子なら、||はb==0 とc==0をつないでる。 質問2:質問1の仮説が正しいとすると、前者も後者も論理演算子&&は、論理演算子||とb==0を共有してますよね?
- javaでEUC-JP文字列→UTF-8への変換
DB内にEUC-JPで保存されているデータを取得して、これをUTF-8文字列として扱いたいです。 phpでいうところの$string = mb_convert_encoding($string, "UTF-8", "EUC-JP"); をjavaで実現したいです。 どのように記述すれば変換できるのでしょうか? 検索しても、数十行もコードを書いて実現しているものばかりで、 シンプルな方法が見つかりません。 javaには難しい処理なのでしょうか…
- 締切済み
- Java
- rabrabrabbit
- 回答数1
- Javaで外部ファイルの実行
Javaで外部ファイルの形態素解析ツールのjumanを実行させようとしてるのですが上手くいきません。 ソースは以下のようにしています。 public class CommandExec { /** * 外部コマンドを実行します。 * またリタンーン値で、標準出力、エラー出力 、リターンコードを取得します。 * 例: * execCommand("notepad.exe"); * * @see execCommand(String[] cmds) * ※実行するコマンドに引数(パラメータ)がある場合は、 * 以下を使用してください。 * @param cmd 実行するコマンド * @return コマンド実行結果情報を保持するString配列 * 配列[0] ⇒ 標準出力 * 配列[1] ⇒ エラー出力 * 配列[2] ⇒ リターンコード * @throws IOException 入出力エラーが発生した場合 */ String b; public static String[] execCommand(String cmd) throws IOException, InterruptedException { return execCommand(new String[] { cmd }); } /** * 外部コマンドを引数(パラメータ)を指定して実行します。 * またリタンーン値で、標準出力、エラー出力 、リターンコードを取得します。 * 例: * execCommand(new String[]{"notepad.exe","C:\test.txt"}); * * Process.waitFor()を実行していますので、外部コマンドの実行が * 終了するまでこのメソッドは待機します。 * * @see execCommand(String cmd) * ※実行するコマンドに引数がない場合は簡易的にこちらを * 使用してください。 * @param cmds 実行するコマンドと引数を含む配列 * @return コマンド実行結果情報を保持するString配列 * 配列[0] ⇒ 標準出力 * 配列[1] ⇒ エラー出力 * 配列[2] ⇒ リターンコード * @throws IOException 入出力エラーが発生した場合 */ public static String[] execCommand(String[] cmds) throws IOException, InterruptedException { String[] returns = new String[3]; String LINE_SEPA = System.getProperty("line.separator"); Runtime r = Runtime.getRuntime(); Process p = r.exec(cmds); InputStream in = null; BufferedReader br = null; try { in = p.getInputStream(); StringBuffer out = new StringBuffer(); br = new BufferedReader(new InputStreamReader(in,"sjis")); String line; while ((line = br.readLine()) != null) { out.append(line + LINE_SEPA); System.out.println(line); } System.out.print("\n"); returns[0] = out.toString(); br.close(); in.close(); in = p.getErrorStream(); StringBuffer err = new StringBuffer(); br = new BufferedReader(new InputStreamReader(in)); while ((line = br.readLine()) != null) { err.append(line + LINE_SEPA); } returns[1] = err.toString(); returns[2] = Integer.toString(p.waitFor()); return returns; } finally { if (br != null) { br.close(); } if (in != null) { in.close(); } } } public static void main(String[] args) throws IOException, InterruptedException { ArrayList a = new ArrayList(); CommandExec.execCommand(new String[]{"C:\\Program Files\\juman\\juman.exe","<","C:\\Program Files\\juman\\test1.txt"}); } } これをおなじ解析ツールのchasenを実行した場合は上手くいくのですがなぜでしょうか? chasenの場合は以下のようにしてます。 CommandExec.execCommand(new String[]{"C:\\Program Files\\ChaSen\\chasen.exe","C:\\Program Files\\Chasen\\test1.txt"}); よろしくお願いします。
- バイナリファイルでOutOfMemoryエラー
お世話になります。 ブラウザ画面からファイルをアップロードし、そのバイナリデータを返すメソッドを作成したのですが、約50MB以上のファイルを使用するとOutOfMemoryエラーとなりJava heap spaceが足りないといわれてしまいます。ヒープサイズをあげればエラーはしなくなるとはおもいますが、根本的な解決にはならないと思います。 public byte[] upload(FormFile ff) throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); InputStream is = ff.getInputStream(); BufferedInputStream bis = new BufferedInputStream(is); byte[] byteData; try { int data = 0; byte[] buffer = new byte[1024]; while ((data = bis.read(buffer) != -1) { baos.write(buffer, 0, data); } byteData = baos.toByteArray(); } catch (IOException e) { throw e; } finally { if (null != bis) { bis.close(); } } return byteData; } 以上のようなメソッドなのですが、おかしい点はありますでしょうか。 指摘していただけると助かります。 よろしくお願いいたします。