エラーで式の開始が不正ですと出ます

このQ&Aのポイント
  • 質問内容: ファイル student.txt に学生データ(学籍番号、氏名、所属学部)が入っている。半角文字で学籍番号を入れて、検索ボタンを押すと、氏名と学部が表示される。存在しない学籍番号を入れて、検索ボタンを押すと、「該当なし」が表示される。
  • プログラムソース: グリッドレイアウトを使用してGUIを作成するJavaプログラム。学生データをファイルから読み込み、学籍番号を検索して氏名と学部を表示する機能が実装されている。
  • 解決方法: エラーメッセージ「式の開始が不正です」とは、変数やメソッドの宣言や定義の位置が間違っていることを意味します。このエラーを解決するためには、変数やメソッドの宣言や定義の位置を修正する必要があります。具体的には、各変数の宣言やメソッドの定義を適切な場所に移動させることでエラーを解消できます。
回答を見る
  • ベストアンサー

エラーで式の開始が不正ですと出ます。

質問内容 課題 ・ファイル student.txt に学生データ(学籍番号、氏名、所属学部)が入っている。 ・半角文字で学籍番号を入れて、検索ボタンを押すと、氏名と学部が表示される。 ・存在しない学籍番号を入れて、検索ボタンを押すと、「該当なし」が表示される。 ・ファイル student.txt の内容。  学籍番号 氏名 学部の間は半角スペースで区切る。 0521201 金城花子 文学部 0533101 守山春子 生活環境学部 0561101 大森夏子 人間科学部 0552130 名城秋子 現代文化学部 0571201 鶴舞冬子 薬学部 プログラムソース↓ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; class kadai2Frame extends JFrame { private JTextField tf1,tf2,tf3; public kadai2Frame() { setSize(200,100); addWindowListener(new WindowAdapter() { // ×クリック時の終了処理 public void windowClosing(WindowEvent e) { System.exit(0); } }); Container c=getContentPane(); c.setLayout(new GridLayout(4,2)); // グリッドレイアウト4 行2 列を指定 c.add(new JLabel("学籍番号")); // 最初のラベルを作成して[名前]と表示 c.add(tf1=new JTextField("",8)); c.add(new JLabel("氏名")); // 最初のラベルを作成して[名前]と表示 c.add(tf2=new JTextField("",8)); c.add(new JLabel("学部")); // 次のラベルを作成して[年齢]と表示 c.add(tf3=new JTextField("",8)); JButton bt; c.add(bt=new JButton("検索")); // ボタンbt を作成して[検索]と表示 bt.addActionListener(new ActionListener() { // ボタンbt のリスナーを登録 public void actionPerformed(ActionEvent e) { // ボタンが押された時 string s6 = tf1.getText(); if(s1.equals(s6)){tf2.setText(str1Ary[1]); string s6 = tf1.getText(); if(s2.equals(s6)){tf2.setText(str2Ary[1]); string s6 = tf1.getText(); if(s3.equals(s6)){tf2.setText(str3Ary[1]); string s6 = tf1.getText(); if(s4.equals(s6)){tf2.setText(str4Ary[1]); string s6 = tf1.getText(); if(s5.equals(s6)){tf2.setText(str5Ary[1]); } public static void main(String[] args) { JFrame w=new kadai2Frame(); w.setVisible(true); try{ BufferedReader br = new BufferedReader(new FileReader("student.txt")); } catch (FileNotFoundException e) { String str1 = br.readLine(); String str2 = br.readLine(); String str3 = br.readLine(); String str4 = br.readLine(); String str5 = br.readLine(); String[] str1Ary = str1.split(" "); for (int i=0; i<str1Ary.length; i++) { System.out.println(str1Ary[i]); } String[] str2Ary = str2.split(" "); for (int i=0; i<str2Ary.length; i++) { System.out.println(str2Ary[i]); } String[] str3Ary = str3.split(" "); for (int i=0; i<str3Ary.length; i++) { System.out.println(str3Ary[i]); } String[] str4Ary = str4.split(" "); for (int i=0; i<str4Ary.length; i++) { System.out.println(str4Ary[i]); } String[] str5Ary = str5.split(" "); for (int i=0; i<str5Ary.length; i++) { System.out.println(str5Ary[i]); } String s1 = "str1Ary[0]"; String s6 = "tf1"; String s2 = "str2Ary[0]"; String s3 = "str3Ary[0]"; String s4 = "str4Ary[0]"; String s5 = "str5Ary[0]"; } } }); } } 以上です。誰か教えてください!!(ToT)

  • Java
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

動かないこと前提に。 まず, if文の構文がおかしいので直します。最後に}をつける if(s1.equals(s6)){tf2.setText(str1Ary[1]);} string s6 = tf1.getText(); if(s2.equals(s6)){tf2.setText(str2Ary[1]);} string s6 = tf1.getText(); if(s3.equals(s6)){tf2.setText(str3Ary[1]);} string s6 = tf1.getText(); if(s4.equals(s6)){tf2.setText(str4Ary[1]);} string s6 = tf1.getText(); if(s5.equals(s6)){tf2.setText(str5Ary[1]);} 53行目の閉じ括弧に対応するのは 28行目の括弧です。 つまり public static void mainも bt.addActionListener(new ActionListener(){ 27行目 }) 111行目 の中に入っているのでしょうが, おそらくメソッドを二つ入れる形になっているのでエラーがでているんだと思います。 111行目を取り除いて 54行目に }); を記述します 次に mainの前に public kadai2Frame() { を閉じていないことがわかるので 55行目に } を補います。 これで応急処置は終わりです。それまでに閉じているはずのものを全然閉じてないからエラーが出ていたんです。 61行目のtry{は64行目 65行目のcatch{はfor文は対応関係が正しいから無視して}109行目。 mainの終了は 110行目。 すると 112行目がクラスの終わりだから 113行目はいらない。 そうすると,シンボルが見つからない云々というエラーだらけになります。 これは,変数の宣言位置とスコープの問題なのでそのエラーとは別に解決してください。 変数宣言をきちんとやれば,コンパイルは通るはずです。 #思い通りには動かないと思うけど。

その他の回答 (1)

回答No.1

import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.*; class Q3683613A extends JFrame { /* クラス名が違うのは俺の教えてgooの質問管理上の都合。 personクラスを作った上にArrayList使った関係上,元と全く違うコードになってしまった。 二次元配列で最初作ろうとしたら凄く混乱した。 設計的にクラスでいいのかはわからん。 注意点。 1.元と違って,テキストファイルの文字符号化方式をUTF-8と明示的に指定している。 Windowsで普通にテキスト作っているときはShift_JISが多いから気をつけてね。 2.ファイル読み込み時の例外処理とか多分不完全。 3.本当はテキストファイルが本当に正しい形式で書かれているのかも検証する必要がある。 4.今のところ,personクラスが持つフィールドは3つだが,将来の拡張を見据える必要がある。 5.ファイル名をコマンドラインから与えるようにした方が本当は汎用性があると思う。 6.各メソッドや変数がPascalCaseかCamelCaseかまでは検討していない 7.JavaDocとかは書き方を知らないので勘弁してください。 元のコードは・・・ if文の終了時の閉じ括弧が抜けていることが多かった。 宣言位置および変数のスコープを理解しているようには見えなかった。 配列とかを上手に使うことを目指してみよう! */ private JTextField tf1,tf2,tf3; private JButton bt; private ArrayList<person> Data = new ArrayList<person>(); private void LoadData(){ BufferedReader br = null; try{ br = new BufferedReader(new InputStreamReader(new FileInputStream("student.txt"), "UTF-8")); String str = br.readLine(); while(str != null){ System.out.println(str); String[] pdata = str.split(" "); person p = new person(pdata[0],pdata[1],pdata[2]); Data.add(p); str = br.readLine(); } }catch (java.io.FileNotFoundException e) { System.out.println(e.getStackTrace().toString()); System.exit(0); }catch (java.io.IOException e){ System.out.println(e.getStackTrace().toString()); System.exit(0); }finally{ } } private void InitializeComponent(){ setSize(200,500); addWindowListener( new WindowAdapter() { // ×クリック時の終了処理 public void windowClosing(WindowEvent e) { System.exit(0); } } ); Container c=getContentPane(); c.setLayout(new GridLayout(4,2)); // グリッドレイアウト4 行2 列を指定 tf1 = new JTextField("",8); c.add(new JLabel("学籍番号")); // 最初のラベルを作成して[名前]と表示 c.add(tf1); tf2 = new JTextField("",8); c.add(new JLabel("氏名")); // 最初のラベルを作成して[名前]と表示 c.add(tf2); tf3 = new JTextField("",8); c.add(new JLabel("学部")); // 次のラベルを作成して[年齢]と表示 c.add(tf3); bt = new JButton("検索"); c.add(bt); // ボタンbt を作成して[検索]と表示 bt.addActionListener(new ActionListener() { // ボタンbt のリスナーを登録 public void actionPerformed(ActionEvent e) { // ボタンが押された時 boolean Foundflag = false; for(int i = 0;i < Data.size();i++){ if(tf1.getText().equals(Data.get(i).getID())){ tf2.setText(Data.get(i).getName()); tf3.setText(Data.get(i).getMajor()); Foundflag = true; } } if(!Foundflag){ tf2.setText("該当なし"); tf3.setText("該当なし"); } } }); } Q3683613A() { LoadData(); InitializeComponent(); } public static void main(String[] args) { JFrame w=new Q3683613A(); w.setVisible(true); } } class person{ private String ID = null; private String Name = null; private String Major = null; person(String id,String name,String major){ ID = id; Name = name; Major = major; } public String getID(){ return ID; } public String getName(){ return Name; } public String getMajor(){ return Major; } public void setID(String str){ ID = str; } public void setName(String str){ Name = str; } public void setMajor(String str){ Major = str; } }

yukachan7
質問者

お礼

ご親切にありがとうございます。 もう一度参考に作ってみます。 一ついい忘れてましたが、 public static void main(String[] args){ ^ の部分が式の開始が不正ですと出ました。 括弧が対応してないからなのでしょうか?

関連するQ&A

  • javaについて

    キーボードから入力をして、その後str[0][0]とstr[1][0]の文字を繋げたいのですがエラーとなってしまいます。どう変えたらよいでしょうか。 以下がプログラムです。 import java.io.*; import java.lang.*; import java.net.*; import java.awt.*; class gugu3 { public static void main(String[] args) throws IOException { int KEYWORDMAX=10; int CNTMAX=100; String [][]str = new String[KEYWORDMAX][CNTMAX]; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line=null; for (int i=0;i<KEYWORDMAX;i++){ System.out.println("第"+(i+1)+"番目のキーワードを設定しますか?(y/n)"); line=br.readLine(); if(line.equals("n")) break; for (int s=0;s<CNTMAX;s++){ System.out.println("キーワードを入力してください(終了=0)"); line=br.readLine(); if(line.equals("0"))break; str[s][i]=line; } } String keyword = new String(str[0][0]" "str[1][0]); System.out.println("キーワードは "+keyword); } } 以下はエラー表示です。 gugu3.java:24: ')' がありません。 String keyword = new String(str[0][0]" "str[1][0]); ^ gugu3.java:24: 文ではありません。 String keyword = new String(str[0][0]" "str[1][0]); ^ gugu3.java:24: ';' がありません。 String keyword = new String(str[0][0]" "str[1][0]); ^ エラー 3 個

    • ベストアンサー
    • Java
  • コンパイルエラーについて。

    今晩は。現在javaについて勉強しているのですが、 コンパイルエラーを解決することが出来ません。 プログラムの内容は好きな文字列を入力し、空白文字を取り除き出力するといったものです。 空白はindexOf()メソッドを使って探し出す。 空白削除はdeleteCharAt()メソッドを使って行う。 というのが条件です。 どなたかご回答おまちしております。 class bf2{ public static void main(String args[])throws IOException{ String t = "end"; String str = ""; int l; int i; int xx=0; String kuhaku = " "; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while(!str.equals(t)){ System.out.print(">"); str = br.readLine(); if(str.equals(t)) break; l = str.length(); i=0; StringBuffer str2 = new StringBuffer(str); while(i<l){ xx = str2.indexOf(kuhaku); str2.deleteCharAt(xx); //こちらがコンパイルエラー会場です。 i++; System.out.println(str2); } } } } Exception in thread "main" java.lang.StringIndexOutOfBoundsException at java.lang.StringBuffer.deleteCharAt(Unknown Source)

    • ベストアンサー
    • Java
  • javaプログラムのファイル書き出しについて

    以前はファイルに書き出すためのパスが違っており、書き出せずにいるところをアドバイスいただきありがとうございます。 プロフィールを書くプログラムを組んでいます。 打ち込んだプロフィールを画面に表示すると同時に、ファイルにも結果を書き出したいのですが、書き出せれる内容が、打ち込んだ内容ではなく、 プルグラムの書き込み欄に例として表示される用に書いている、 下の内容が書き出されてしまいます。 「name = new JTextField("名前", 20); birth = new JTextField("生年月日", 20); address = new JTextField("住所", 40); mail = new JTextField("mail", 40); number= new JTextField("電話番号", 30);」 テキストファイルに書き出される内容です。 「名前:名前 生年月日:生年月日 住所:住所 mail:mail 電話:電話番号」 打ち込んだ内容がテキストファイルに書き出すにはどうすればいいでしょうか? 下がソースコードです。 よろしくお願いします。 import java.io.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; class Sample extends JFrame implements ActionListener{ /** * */ private static final long serialVersionUID = 1L; static JTextField name; static JTextField birth; static JTextField address; static JTextField mail; static JTextField number; JLabel label; public static void main(String args[]){ Sample frame = new Sample("profile"); frame.setVisible(true); } Sample(String title){ setTitle(title); setBounds(100, 100, 500, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel p = new JPanel(); name = new JTextField("名前", 20); birth = new JTextField("生年月日", 20); address = new JTextField("住所", 40); mail = new JTextField("mail", 40); number= new JTextField("電話番号", 30); JButton button = new JButton("取得"); button.addActionListener(this); label = new JLabel(); p.add(name); p.add(birth); p.add(address); p.add(mail); p.add(number); p.add(button); Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.CENTER); contentPane.add(label, BorderLayout.SOUTH); try{ File file = new File("C:\\Users\\mattun\\Documents\\sample.txt"); if (checkBeforeWritefile(file)){ PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file))); //ファイルに書き込む内容 pw.println("名前:"+name.getText()); pw.println("生年月日:"+birth.getText()); pw.println("住所:"+address.getText()); pw.println("mail:"+mail.getText()); pw.println("電話:"+number.getText()); pw.close();//ファイルを閉じる }else{ System.out.println("ファイルに書き込めません");//書き込み出来ない場合 } }catch(IOException e){ System.out.println(e); } } public void actionPerformed(ActionEvent e){ label.setText("<html>"+"名前:"+name.getText()+"<br>"+"生年月日:"+birth.getText()+"<br>"+"住所:"+address.getText()+ "<br>"+"mail:"+mail.getText()+"<br>"+"電話:"+number.getText()+"</html>"); } private static boolean checkBeforeWritefile(File file){ if (file.exists()){ if (file.isFile() && file.canWrite()){ return true; } } return false; } }

    • ベストアンサー
    • Java
  • Javaのプログラミングで困っています。

    プロフィールを打ち込んで表示するプログラムを書いていました。 プロフィールの打ち込み後に画面に表示するのと同時にテキストファイルに書き出したいと思ったため、書いてみましたが、ファイルに書き込めず知識不足で困っています。 是非教えていただきたく書き込みをさせていただきました。 自分で書いたコードは書きになります。 import java.io.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; class Sample extends JFrame implements ActionListener{ /** * */ private static final long serialVersionUID = 1L; static JTextField name; static JTextField birth; static JTextField address; static JTextField mail; static JTextField number; JLabel label; public static void main(String args[]){ Sample frame = new Sample("profile"); frame.setVisible(true); } Sample(String title){ setTitle(title); setBounds(100, 100, 500, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel p = new JPanel(); name = new JTextField("名前", 20); birth = new JTextField("生年月日", 20); address = new JTextField("住所", 40); mail = new JTextField("mail", 40); number= new JTextField("電話番号", 30); JButton button = new JButton("取得"); button.addActionListener(this); label = new JLabel(); p.add(name); p.add(birth); p.add(address); p.add(mail); p.add(number); p.add(button); Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.CENTER); contentPane.add(label, BorderLayout.SOUTH); try{ File file = new File("C:Users\\mattun\\Documents\\sample.txt"); if (checkBeforeWritefile(file)){ PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file))); //ファイルに書き込む内容 pw.println("名前:"+name.getText()); pw.println("生年月日:"+birth.getText()); pw.println("住所:"+address.getText()); pw.println("mail:"+mail.getText()); pw.println("電話:"+number.getText()); pw.close();//ファイルを閉じる }else{ System.out.println("ファイルに書き込めません");//書き込み出来ない場合 } }catch(IOException e){ System.out.println(e); } } public void actionPerformed(ActionEvent e){ label.setText("<html>"+"名前:"+name.getText()+"<br>"+"生年月日:"+birth.getText()+"<br>"+"住所:"+address.getText()+ "<br>"+"mail:"+mail.getText()+"<br>"+"電話:"+number.getText()+"</html>"); } private static boolean checkBeforeWritefile(File file){ if (file.exists()){ if (file.isFile() && file.canWrite()){ return true; } } return false; } }

    • ベストアンサー
    • Java
  • 一桁電卓(setText)

    //<applet code="Calc.class" width="250" height="150" ></applet> import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Calc extends JApplet implements ActionListener{ JTextField display; int row=4,column=4,value=0,d; char str,str2; JButton[][] button=new JButton[row][column]; String[][] buttonName={{"7","8","9","/"}, {"4","5","6","*"}, {"1","2","3","-"}, {"0","C","=","+"}}; public void init(){ Container pane=getContentPane(); JPanel panel=new JPanel(); panel.setLayout(new GridLayout(4,4)); display=new JTextField(String.valueOf(value)); pane.add(display); display.setHorizontalAlignment(JTextField.RIGHT); display.setEditable(false); for(int a=0;a<row;a++){ for(int b=0;b<column;b++){ button[a][b]=new JButton(buttonName[a][b]); panel.add(button[a][b]); button[a][b].addActionListener(this); } } pane.add(panel,BorderLayout.SOUTH); } public void setText(int c){ if(str2!='/'&&str2!='*'&&str2!='-'&&str2!='+'){ value=c; } else if(str=='='){ display.setText(String.valueOf(value)); } if(str!='/'&&str!='*'&&str!='-'&&str!='+'&&str!='='){ display.setText(String.valueOf(c)); if(str2=='/')value=value/c; if(str2=='*')value=value*c; if(str2=='-')value=value-c; if(str2=='+')value=value+c; } else{ display.setText(String.valueOf(value)); if(str2=='/')value=value/c; if(str2=='*')value=value*c; if(str2=='-')value=value-c; if(str2=='+')value=value+c; } } public void actionPerformed(ActionEvent e){ for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ if(e.getSource()==button[i][j]){ str=buttonName[i][j].charAt(0); switch(str){ case '/': str2=str; setText(1); break; case '*': str2=str; setText(1); break; case '-': str2=str; setText(0); break; case '+': str2=str; setText(0); break; case '=': setText(d); break; case 'C': str2=str; value=0; setText(value); break; default: d=Integer.parseInt(buttonName[i][j]); setText(d); break; } } } } } } 上のプログラムは一桁電卓です。 プログラムは思ったように動くんですが、 seText(0、または1)の部分がどういう役目を果たしているか、0と1でどう違ってくるのかが分かりません。できればsetText(char)の説明も交えて教えていただけませんか?

  • java修正

    以下のDentaku.javaのソースコードには引き算と割り算の部分が抜けてしまっているのですが引き算と割り算の部分を付け加えてくれる方お願いします。。(うまく手を加えることができませんでした) // Dentaku.java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Dentaku extends JFrame implements ActionListener { JTextField text1, text2; JButton button1, button2, button3; JLabel label; // コンストラクタ public Dentaku() { // コンテントペインを取得 Container contentPane = getContentPane(); // レイアウトマネージャーを設定 contentPane.setLayout(new GridLayout(6,1)); // テキストフィールド生成 text1 = new JTextField("", 20); text2 = new JTextField("", 20); // テキストフィースドを追加 contentPane.add(text1); contentPane.add(text2); // ボタンを作成 button1 = new JButton("+"); button2 = new JButton("x"); button3 = new JButton("Clear"); // アクションリスナーを登録 button1.addActionListener(this); button2.addActionListener(this); button3.addActionListener(this); // ボタンを追加 contentPane.add(button1); contentPane.add(button2); contentPane.add(button3); // ラベルを生成 label = new JLabel(""); // 文字を真ん中に表示 label.setHorizontalAlignment(JLabel.CENTER); // ラベルを追加 contentPane.add(label); // ウインドウが閉じられたときにアプリケーションを終了するように設定 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // サブコンポーネントの推奨サイズおよびレイアウトに合わせて // この Window をサイズ変更するように設定 pack(); // 表示します setVisible(true); } public static void main(String[] args) { // フレームを作成 Dentaku frame = new Dentaku(); } /** * アクションが発生すると呼び出されます。 */ public void actionPerformed(ActionEvent ae){ // イベントが指定されたボタンで発生した場合 //足し算 if (ae.getSource().equals(button1)) { try{ String tx1=text1.getText(); String tx2=text2.getText(); double d1=Double.parseDouble(tx1); double d2=Double.parseDouble(tx2); String answer=Double.toString(d1+d2); label.setText(answer); }catch (NumberFormatException e) { label.setText("数字を正しく入力してください。"); } } //掛け算 if (ae.getSource().equals(button2)) { try{ String tx1=text1.getText(); String tx2=text2.getText(); double d1=Double.parseDouble(tx1); double d2=Double.parseDouble(tx2); String answer=Double.toString(d1*d2); label.setText(answer); }catch (NumberFormatException e) { label.setText("数字を正しく入力してください。"); } } if (ae.getSource().equals(button3)) { text1.setText(""); text2.setText(""); label.setText(""); } } }

  • java通信について

    アプレットビューアは 通信成功できますが HTMLから実行すると失敗します so = new Socket( "localhost", 80 ); この部分が失敗してるようです なぜ起こるんでしょうか ? 解決方法を教えてください。 //html <html><body> <applet code = "a.class" width = "370" height ="530"></applet> </body></html>   //<applet code = "a.class" width="400" height = "200"></applet> import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; public class a extends java.applet.Applet implements ActionListener{ TextField tf; Button b; TextArea t; Panel p, p1; String str = "http://localhost/cgi-bin/a.cgi"; public void init(){ tf = new TextField( 32 ); b = new Button( "Post" ); t = new TextArea( 20, 48 ); b.addActionListener( this ); p = new Panel(); p.add( new Label( "String" ) ); p.add( tf ); p.add( b ); p1 = new Panel(); p1.add( t ); add( p ); add( p1 ); } public void actionPerformed( ActionEvent e ){ String str; if( e.getSource() == b ){ t.setText( sen( tf.getText() ) ); } } private String sen( String a ){   Socket so = null; InputStreamReader in = null; OutputStream os = null; String str1 = new String(); try { t.setText( "aa" ); so = new Socket( "localhost", 80 ); t.setText( "bb" ); in = new InputStreamReader( so.getInputStream() ); os = so.getOutputStream(); }catch( Exception e ){ return "Error!"; } String H = "POST " + str + " HTTP/1.0\n"; H += "Content-Length:" + String.valueOf( a.length() ) + "\n\n"; String st = new String( H + a ); try{ os.write( st.getBytes() ); }catch( Exception e ){ return "Error!"; } str1 = "Send:\n" + st; boolean bo = true; StringBuffer sb = new StringBuffer(); int s; while( bo ){ try{ s = in.read();   if( s == -1 ) bo = false; else sb.append( (char)s ); }catch( Exception e ){ bo = false; } } str1 += "\nResv:\n" + sb.toString(); return str1; } }

    • ベストアンサー
    • Java
  • Javaのプログラムについて教えてください!

    Genericsを使ってエラーの出ないようにするにはどうすればいいですか? import java.util.*; public class Sample{ public static void main(String[] args){ ArrayList ary = new ArrayList(); ary.add("Mac"); ary.add("Wiindows"); ary.add("Linux"); for(Object str:ary){ System.out.println((String)str); } } }

    • ベストアンサー
    • Java
  • InputVerifierのフォーカス遷移について

    正しい入力を促すため、テキストフィールドにInputVerifierを設定しました。 以下に動作を記載致します。 【Tabで遷移を行った場合】 入力が"OK"の場合、遷移先へ遷移 入力が"OK"以外の場合、遷移しない(フォーカスは留まる) 【Tab+Shiftで遷移を行った場合】 入力が"OK"の場合、遷移先へ遷移 入力が"OK"以外の場合、フォーカスがどこかへ行ってしまう 入力が正しくない場合で、Tab+Shiftで遷移を行った場合もフォーカスが留まるようにしたいのですが、 何かいい方法はありますでしょうか? 以下がサンプルです。 ------------------------------------------------------------ import java.awt.*; import java.util.*; import java.awt.event.*; import javax.swing.*; public class VerifierTest extends JFrame { public VerifierTest() { JTextField tf1 = new JTextField ("入力"); getContentPane().add (tf1, BorderLayout.NORTH); tf1.setInputVerifier(new PassVerifier()); JTextField tf2 = new JTextField ("遷移先"); getContentPane().add (tf2, BorderLayout.SOUTH); WindowListener l = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; addWindowListener(l); } class PassVerifier extends InputVerifier { public boolean verify(JComponent input) { JTextField tf = (JTextField) input; return "OK".equals(tf.getText()); } } public static void main(String[] args) { Frame f = new VerifierTest(); f.pack(); f.setVisible(true); } } ------------------------------------------------------------ 以上です。 よろしくお願いします。

    • ベストアンサー
    • Java
  • JAVAでエラーがでる。

    JAVA初心者なのですが、下のプログラムは数値を入力して、それを表示させるという簡単なプログラムなのですが、実行すると、 String str = br.readLine(); のbr.readLine();の部分に赤い波線が出て、 「処理されない例外の型 IOException at B.main(B.java:11)」 というエラーが出てしまってこまっています。 参考書のとうりに入力しているのになぜでしょうか? タブやスペースが使えないので見にくくなってしまってすみません。 どなたかJAVAに詳しい方 教えてください。 import java.io.*; public class B { public static void main(String[] args) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); System.out.println(num + "が入力されまた。"); } }

    • ベストアンサー
    • Java

専門家に質問してみよう