komi1341 の回答履歴
- ファイル読込みにおける改行表示に関して
Javaの少々慣れ始めた者ですが、 現在、下記のようにファイル読込みした内容をコンソールに出力する プログラムを作成しております。 しかし、コンソールの表示結果が望んでいる結果と異なってしまっております。 というのは、読み込みファイルにて「\n」と記述している箇所にて、 改行することを望んでおりますが、コンソール表示結果は改行されずに、 そのまま「\n」が表示されており改行されません。 「\n」を改行として認識させるには他に方法があるのでしょうか? 大変お手数お掛け致しますが、ご教授お願い致します。 ■OS Windos Vista HomeEdition ■Java jdk1.6.0_12 ■Test.java ----- import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class Test { public static void main(String[] args) { // バッファリーダー宣言 BufferedReader br = null; try { // ファイルオープン br = new BufferedReader(new FileReader( "TEXT.txt" )); // ファイル読込み行 String line = ""; while ( ( line = br.readLine() ) != null ){ System.out.println(line); } } catch (Exception e1) { e1.printStackTrace(); } finally { try { br.close(); } catch (IOException e2) { e2.printStackTrace(); } } } } ----- ■TEXT.txt ----- これはテストですか?\nはい、テストです。 ----- ■コンソール結果 ----- これはテストですか?\nはい、テストです。 ----- ■望む表示結果 ----- これはテストですか? はい、テストです。 ----- ↑どうもうまく改行できておりません。。。
- java:読み込んだデータの確認
javaを使って通信のプログラムをつくっています。 送信側でバイトデータを作成して送信します。そして受信側でそのバイトデータを読み込みます。 送信側で作ったバイト数が本当に受信側に届いたかのチェックをするには、 どうすればよいでしょうか?下のコードは、自作した受信処理です。 調べると、read(byte[] b,int off,int len)の返り値が読み込んだバイト数ということなので、 これを使うのではないかと思うのですが、どう使えばよいか分かりません。下のコードは、とりあえず、受信したらcount++として受信処理分だけ countを増やして受信したバイトを数えています。 readの返り値で受信したバイト数を取得するには、どうすればよいでしょうか? 御教授お願いします。 送信側 BufferedOutputStream out = new BufferedOutputStream(sock.getOutputStream()); for (int i = 0; i < Data; i++) { for (;;) { try { out.write(i); out.flush(); count++; break; } catch (IOException e) { System.err.println((count + 1) + "つ目のバイト:書き込みエラー>>再書き込み"); } } } 受信側 BufferedInputStream in = new BufferedInputStream(sock.getInputStream()); int ch = 0; // 読み込んだ文字 int Count = 0; // 届いたバイト数のカウンター while (ch != -1) { try { ch = in.read(); Count++; } catch (IOException e) { System.err.println(Count + "つ目のバイトデータ:読み込みエラー"); } }
- 音楽を流したい。
現在画像や文字を表示させるとともに、BGMも同時に流れるようになるプログラムを作っていますが、BGMを流すための処理メソッド(?)が分からなくて困っています。 分かる方は教えていただけると有難いです。 BGMのファイル名は「bgm.mid」です。 <プログラムソース> import java.awt.Color; import java.awt.Graphics; import java.awt.Image; import java.lang.String; import java.awt.Font; import javax.swing.*; class BGMTest extends JFrame{ public BGMTest() { add(new DrawPanel()); } public static void main(String args[]){ JFrame frame = new GameTitle(); frame.setSize(640, 480); frame.setTitle("BGMテスト"); frame.setLocationRelativeTo(null); frame.setBackground(Color.pink); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } class DrawPanel extends JPanel{ String path = "start.jpg"; Image image; public DrawPanel() { ImageIcon icon = new ImageIcon(path); image = icon.getImage(); } public void paintComponent(Graphics args) { super.paintComponent(args); args.drawImage(image, 0, 0, this); args.setFont(new Font("TimesRoman",Font.ITALIC,100)); args.setColor(Color.red); args.drawString("BGMテスト", 120, 230); } }
- ファイル出力ついて
当方、JAVA初心者です。 CSVファイルの出力を行うプログラムを作成しています。 仕様として1行目はヘッダ部分を出力し、 2行目以降にDBの値を出力するCSVファイルを作成しようとしています。 例 (ヘッダ部分)"項目A----","項目B----","項目C----","項目D----" (データ部分)"項目Aの値","項目Bの値","項目Cの値","項目Dの値" ・ ・ ですが、データ部分の個数が不変になっており、ヘッダ部分がずれてしまいます。 例 項目Cの数が2個ある場合はデータ部分に項目Cの値を2個出力する為、 項目Dのヘッダ部の列の下に項目Cの2個目の値が書き込まれてしまいます。 "項目A----","項目B----","項目C-----","項目D-----" "項目Aの値","項目Bの値","項目Cの値1","項目Cの値2","項目Dの値" ・ ・ そこで、先にデータ部分の書き込みを行い、それぞれの項目のデータ件数の最大値を保持し、最後にデータ件数の最大値に合わせてヘッダ部分の書き込みを行おうと考えているのですが、 ファイルをopenしなおす方法以外で、 先に2行目以降の書き込みを行い、最後に1行目の書き込みを行う方法がわからなく困っております。 ご回答のほど、宜しくお願いします。
- クラスパスの設定
システム環境変数における設定 C:\java\pack1\sample1.jar C:\java\pack2\sample2.class があり、sample2.classのソースファイルが C:\java\pack3\sample2.java だとします。 さらにsample1.jarを解凍すると sample1\sample3.classにmainメソッドがあるものとします。 このとき、 sample2.classを実行するときにsample1.sample3をインポートできるようにする為には、sample2.classに import pack1.sample3; CLASSPATH C:\java\pack1\sample.jar でよいでしょうか?それともどこか間違っているでしょうか?
- Jarファイルにクラスパスを指定したい
最近Javaプログラミングを学び始めたものです。 クラスメソッドを一つのjarファイルにまとめて、その中のクラスを 他のプログラムで呼び出し使うということをやりたいのですが、 それにはjarファイルにクラスパスを指定してその中のクラスを 使うという記述がいるらしいのですがやり方がよく分からず困っています。 そのjarファイルの場所を見てみると /home/kimura/デスクトップ/Jarフォルダ/Jar.jar とあります。 このJar.jarの中にあるクラスを呼び出し使いたいです。 指定の方法や関連するサイトをお知りの方教えてください。 よろしくお願いします。
- 締切済み
- Java
- number3-33
- 回答数2
- 画像が表示されません。
画像のRGBヒストグラムを表示するプログラムを以下のように作りました。 import java.awt.*; import java.awt.event.*; import java.awt.image.*; import javax.swing.*; import javax.swing.ImageIcon; import java.io.*; class RGBMain{ public static void main(String argv[]){ JFrame f=new JFrame("画像とそのヒストグラム"); JPanel p1=new JPanel(); JPanel p2=new JPanel(); JPanel p3=new JPanel(); JLabel l1=new JLabel("input photo"); JLabel l2=new JLabel(); JTextField tf=new JTextField(15); JButton b1=new JButton("open"); JButton b2=new JButton("start"); LoadFile lf=new LoadFile(tf, l2, p2); ShowHist sh=new ShowHist(tf, p3); tf.addKeyListener(lf); b1.addActionListener(lf); b2.addActionListener(sh); p1.add(l1); p1.add(tf); p1.add(b1); p1.add(b2); p2.add(l2); f.setDefaultCloseOperation(f.EXIT_ON_CLOSE); f.getContentPane().add(p1,BorderLayout.NORTH); f.getContentPane().add(p2,BorderLayout.WEST); f.getContentPane().add(p3,BorderLayout.EAST); f.setSize(800, 500); f.setVisible(true); } } class LoadFile implements ActionListener, KeyListener{ JTextField textField; JLabel label; JPanel panel; public LoadFile(JTextField Textfield, JLabel lbl, JPanel pnl){ textField=Textfield; label=lbl; panel=pnl; } public void actionPerformed(ActionEvent e){ if(getClass().getResource(textField.getText())==null) label.setText("ファイルが見つかりません。"); else{ ImageIcon imgicon=new ImageIcon(getClass().getResource(textField.getText())); label.setIcon(imgicon); } label.repaint(); panel.repaint(); } public void keyTyped(KeyEvent e){ if(e.getKeyCode()==e.VK_ENTER){ if(getClass().getResource(textField.getText())==null) label.setText("ファイルが見つかりません。"); else{ ImageIcon imgicon=new ImageIcon(getClass().getResource(textField.getText())); label.setIcon(imgicon); } label.repaint(); panel.repaint(); } } public void keyPressed(KeyEvent e){ } public void keyReleased(KeyEvent e){ } } class ShowHist implements ActionListener{ JTextField textField; JPanel p; public ShowHist(JTextField Textfield, JPanel pnl){ textField=Textfield; p=pnl; } public void actionPerformed(ActionEvent e){ try{ File f=new File(textField.getText()); BufferedImage bi=javax.imageio.ImageIO.read(f); int rgb; int[] rhist=new int[16]; int[] ghist=new int[16]; int[] bhist=new int[16]; int re, gr, bl; int width=bi.getWidth()/3*2/16; for(int y=0;y<=bi.getHeight();y++){ for(int x=0;x<=bi.getWidth();x++){ rgb=bi.getRGB(x, y); bl=rgb%256; gr=bl%256; re=gr%256; rhist[re/16]++; ghist[gr/16]++; bhist[bl/16]++; } } Graphics g=p.getGraphics(); g.setColor(Color.red); int i; int xx=0; for(i=0;i<16;i++){ g.fillRect(xx, bi.getHeight()/3, width, bi.getHeight()/3*(rhist[i]/(bi.getWidth()*bi.getHeight()))); xx+=width; } g.setColor(Color.green); xx=0; for(i=0;i<16;i++){ g.fillRect(xx, bi.getHeight()/3*2, width, bi.getHeight()/3*(ghist[i]/(bi.getWidth()*bi.getHeight()))); xx+=width; } g.setColor(Color.green); xx=0; for(i=0;i<16;i++){ g.fillRect(xx, bi.getHeight()/3*3, width, bi.getHeight()/3*(bhist[i]/(bi.getWidth()*bi.getHeight()))); xx+=width; } p.repaint(); }catch(IOException ex){ ex.printStackTrace(); } } } コンパイルは問題なく通り、 実行すると、ウィンドウは表示されるのですが、ファイル名を入力して openボタンをクリックしてもなにも反応がありません。特に例外も発生していないようなのですが、なぜでしょうか。 ちなみに、画像ファイル名はtrain.jpgで、javaソースファイル、各classファイルと同じディレクトリに置いています。 どなたかよろしくお願いします。
- 画像が表示されません。
画像のRGBヒストグラムを表示するプログラムを以下のように作りました。 import java.awt.*; import java.awt.event.*; import java.awt.image.*; import javax.swing.*; import javax.swing.ImageIcon; import java.io.*; class RGBMain{ public static void main(String argv[]){ JFrame f=new JFrame("画像とそのヒストグラム"); JPanel p1=new JPanel(); JPanel p2=new JPanel(); JPanel p3=new JPanel(); JLabel l1=new JLabel("input photo"); JLabel l2=new JLabel(); JTextField tf=new JTextField(15); JButton b1=new JButton("open"); JButton b2=new JButton("start"); LoadFile lf=new LoadFile(tf, l2, p2); ShowHist sh=new ShowHist(tf, p3); tf.addKeyListener(lf); b1.addActionListener(lf); b2.addActionListener(sh); p1.add(l1); p1.add(tf); p1.add(b1); p1.add(b2); p2.add(l2); f.setDefaultCloseOperation(f.EXIT_ON_CLOSE); f.getContentPane().add(p1,BorderLayout.NORTH); f.getContentPane().add(p2,BorderLayout.WEST); f.getContentPane().add(p3,BorderLayout.EAST); f.setSize(800, 500); f.setVisible(true); } } class LoadFile implements ActionListener, KeyListener{ JTextField textField; JLabel label; JPanel panel; public LoadFile(JTextField Textfield, JLabel lbl, JPanel pnl){ textField=Textfield; label=lbl; panel=pnl; } public void actionPerformed(ActionEvent e){ if(getClass().getResource(textField.getText())==null) label.setText("ファイルが見つかりません。"); else{ ImageIcon imgicon=new ImageIcon(getClass().getResource(textField.getText())); label.setIcon(imgicon); } label.repaint(); panel.repaint(); } public void keyTyped(KeyEvent e){ if(e.getKeyCode()==e.VK_ENTER){ if(getClass().getResource(textField.getText())==null) label.setText("ファイルが見つかりません。"); else{ ImageIcon imgicon=new ImageIcon(getClass().getResource(textField.getText())); label.setIcon(imgicon); } label.repaint(); panel.repaint(); } } public void keyPressed(KeyEvent e){ } public void keyReleased(KeyEvent e){ } } class ShowHist implements ActionListener{ JTextField textField; JPanel p; public ShowHist(JTextField Textfield, JPanel pnl){ textField=Textfield; p=pnl; } public void actionPerformed(ActionEvent e){ try{ File f=new File(textField.getText()); BufferedImage bi=javax.imageio.ImageIO.read(f); int rgb; int[] rhist=new int[16]; int[] ghist=new int[16]; int[] bhist=new int[16]; int re, gr, bl; int width=bi.getWidth()/3*2/16; for(int y=0;y<=bi.getHeight();y++){ for(int x=0;x<=bi.getWidth();x++){ rgb=bi.getRGB(x, y); bl=rgb%256; gr=bl%256; re=gr%256; rhist[re/16]++; ghist[gr/16]++; bhist[bl/16]++; } } Graphics g=p.getGraphics(); g.setColor(Color.red); int i; int xx=0; for(i=0;i<16;i++){ g.fillRect(xx, bi.getHeight()/3, width, bi.getHeight()/3*(rhist[i]/(bi.getWidth()*bi.getHeight()))); xx+=width; } g.setColor(Color.green); xx=0; for(i=0;i<16;i++){ g.fillRect(xx, bi.getHeight()/3*2, width, bi.getHeight()/3*(ghist[i]/(bi.getWidth()*bi.getHeight()))); xx+=width; } g.setColor(Color.green); xx=0; for(i=0;i<16;i++){ g.fillRect(xx, bi.getHeight()/3*3, width, bi.getHeight()/3*(bhist[i]/(bi.getWidth()*bi.getHeight()))); xx+=width; } p.repaint(); }catch(IOException ex){ ex.printStackTrace(); } } } コンパイルは問題なく通り、 実行すると、ウィンドウは表示されるのですが、ファイル名を入力して openボタンをクリックしてもなにも反応がありません。特に例外も発生していないようなのですが、なぜでしょうか。 ちなみに、画像ファイル名はtrain.jpgで、javaソースファイル、各classファイルと同じディレクトリに置いています。 どなたかよろしくお願いします。
- プログラム中でjavaのバージョンを「数値」で取得したい
1.5以上の場合などと分けたいので、数値で取得したいです。 下記のメソッドで文字列として取得し、substringなどで先頭3文字を取得し数値に変換などの方法しかないのでしょうか? System.out.println(System.getProperty("java.version")); System.out.println(System.getProperty("java.vm.version")); System.out.println(System.getProperty("java.specification.version"));
- JOGLで、GLJpanelの外でOpenGLの関数を呼ぶには
JOGLでは、GLJPanelの各種メソッド(init,display,reshapeなど)でしか、OpenGLの関数を呼べないみたいですが、どうしてもGLJPanelの外でOpenGL の関数を呼びたいんです。携帯電話とPCの両方で動かすことができる2D描画のライブラリをつくっているので、特定のクラスの派生クラスにしなくちゃいけないとかではなく、ユーザーが自作したクラスからOpenGLを呼べるようにしたいんです。 試しに以下のコードを参考にして、initで取得したGLクラスの参照を使って、GLJPanelの外でOpenGLの関数を呼んだら、AccessVioration(アクセス違反)のエラーが出てJavaのVMが落ちてしまいました。しかも、GLJPanelのinitが呼び出されるタイミングが分からず、最初はglがnullになっていることもあります。何かいい方法はないでしょうか・・? http://d.hatena.ne.jp/SofiyaCat/20090425/1240646625
- chrをintに変換すると…
char [] aaa = {'a', 'b', 'c', 'd', 'e'}; と宣言したとします。 System.out.println((int)aaa[i]); と出力すると97~101の数字になります。 それはなぜなのでしょうか。
- ベストアンサー
- Java
- mamoru1220
- 回答数3
- chrをintに変換すると…
char [] aaa = {'a', 'b', 'c', 'd', 'e'}; と宣言したとします。 System.out.println((int)aaa[i]); と出力すると97~101の数字になります。 それはなぜなのでしょうか。
- ベストアンサー
- Java
- mamoru1220
- 回答数3
- chrをintに変換すると…
char [] aaa = {'a', 'b', 'c', 'd', 'e'}; と宣言したとします。 System.out.println((int)aaa[i]); と出力すると97~101の数字になります。 それはなぜなのでしょうか。
- ベストアンサー
- Java
- mamoru1220
- 回答数3
- JTextAreaの大きさの指定と固定について
今JTextAreaをJPanelに貼り付けてそれを更にJFrameに貼り付けるプログラムを書いています。 フレームはBorderLayoutにしており、WESTにもEASTにもパネルをaddしてます。 frame.add(createWestPanel(), BorderLayout.WEST); JPanel createWestPanel() { ・・・ return p; } の様な形です。 このパネルにJTextAreaを使用しており、 ボタンを押すとJTextAreaに文を表示する仕様にしたいのですが 大きさを指定しなければ表示する字数によって大きさが勝手に変更されてしまい(その様になるのは当たり前ですが)、他のコンポーネント(例えばBorderLayout.CENTERにあるボタンなど)と重なったりしてしまいます。 そこで、JTextAreaの大きさを指定した上で固定したいのですがどのようにすればよいでしょうか? また、 WestPanelを □□□ ボタン (JTextField) (JButton) JTextArea と言った形にしたいのですが、どうやってもJTextAreaがJButtonの右に来てしまいます。 これも解決方法を教えていただけると助かります。 お願いします。
- Struts2のAPI要件
当方、Struts2(最新バージョン)を使用した開発を予定しております。 ASFのドキュメントを見た限り、 struts2のAPI要件は、以下と認識しております。 ・Servlet API 2.4 ・JSP API 2.0 ・Java 5 (※当方、Java SE 5と解釈) 質問ですが、以下のバージョンには未対応ということでしょうか? ・Servlet API 2.5 ・JSP API 2.1 ・Java SE 6 また、未対応の場合、商用では避けた方がよいものでしょうか? よろしくお願いいたします。
- UDPを使って通信速度測定プログラムを作成
java eclipse3.5を使って通信のプログラムを作っています。 TCPの通信速度計測プログラムはWebサイトのソースを参考にして、自分で作りました。 次は、UDPの通信速度計測プログラムを作りたいのです。 TCPでは、送信側で送信データを作成して、受信側で時間を測ります。 データの作成方法と、時間の計測方法は次のようにしています。 送信側: for (int i = 0; i < data - 2; i++) { out.write('X'); } out.write('\\'); out.write('s'); out.flush(); int recvMicroSecond = Integer.parseInt(in.readLine()); System.out.println(data + "バイトを送信するのに" + recvMicroSecond + "マイクロ秒かかる。"); System.out.println(); 送信側で作成したデータ:XXXX…XX\\s 受信側では、最初のXを読み込んだ時点で時間の計測を開始し、sを読み込んだら計測時間をストップして、計測時間を測っています。 UDPでも送信側でこのようなデータをバッファに格納して、 受信側でバッファ内の文字を読み込んで時間の計測を行いたいのですが、 どのクラスの、どのメソッドを使ったらよいか分かりません。 どなたか、よい方法を知りませんか?