• 締切済み

java プログラム

javaで下記のプログラムをコンパイルすると複数のシンボルが存在しませんとういう文が出てきます。 どのようにどこを書きなおせばコンパイル出来るのしょうか? public class Email { public static void main(String[] argv) throws Exception { String input = "fileContainingEmails.txt"; String output = "copyPasteMyEmails.txt"; BufferedReader cin; cin = new BufferedReader(new InputStreamReader(System.in)); String userInput; System.out.println("Enter input file name [default name: fileContainingEmails.txt]"); userInput = cin.readLine(); if (userInput.equals("")) userInput = input; String name; if (userInput.equals(input)) name = output; else name = userInput; String userOutput; System.out.println("Enter output file name [default name: " + name + " ]"); userOutput = cin.readLine(); if (userOutput.equals("")) userOutput = name; System.out.println("Input : " + userInput); System.out.println("Output: " + userOutput); BufferedReader fin; fin = new BufferedReader(new FileReader(userInput)); PrintWriter fout; fout = new PrintWriter(new FileWriter(userOutput, true)); String lineFromFile = ""; List listOfMail = new ArrayList(); int indexOfAt = 0; int s,e = 0; while (fin.ready()) { lineFromFile = fin.readLine(); indexOfAt = lineFromFile.indexOf('@',indexOfAt); while(indexOfAt > 0) { for(int i = 0;lineFromFile.charAt(indexOfAt-i) != ' ';i++) s = indexOfAt - i; for(int i = 0;lineFromFile.charAt(indexOfAt+i) != ' ';i++) e = indexOfAt + i; if(listOfMail.indexOf(lineFromFile.substring(s,e).toLowerCase) < 0); { listOfMail.Add(lineFromFile.substring(s,e).toLowerCase); fout.println(lineFromFile.substring(s,e).toLowerCase); System.out.println(lineFromFile.substring(s,e).toLowerCase); } indexOfAt = lineFromFile.indexOf('@',indexOfAt + 1); } } fin.close(); fout.close(); int count = 0; count = listOfMail.size(); if (count == 0) System.out.println("Sorry, no email addresses were found in the file " + userInput); else System.out.println(count + "email addresses "); 補足 またこのままだと読み込んだアドレス全て小文字になってしまうのですがそうではなく読み込んだメールアドレスAAA@BBBとaaa@bbbは同じメールアドレスとして扱い片方だけをコンソールに載せるというかたちにするにはどうすればよいのでしょうか?

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

みんなの回答

  • junkUser
  • ベストアンサー率56% (218/384)
回答No.2

toLowerCase() に変更してください。マニュアルを読みなされ。 > このままだと読み込んだアドレス全て小文字になってしまうのですがそうではなく読み込んだメールアドレスAAA@BBBとaaa@bbbは同じメールアドレスとして扱い片方だけをコンソールに載せる 質問の意図が良くわかりませんが、 System.out.println(lineFromFile.substring(s,e).toLowerCase); の行を消せばよいのでは?

  • tom11
  • ベストアンサー率53% (134/251)
回答No.1

プログラムは、よく解りませんが ide使っていないの??? 図のような、エラーが、ちゃんと、表示されていますよ。 ちゃんと、コメントもついているし、、

関連するQ&A

  • java 緊急質問

    java プログラムの課題です このプログラムはファイルを読み込むと最初に十数行の空行が出来てしまいます またファイル内のメールアドレスのみを読み取りたいのですが@の入っていない文も読み取ってしまいます。 あと読み込んだメールアドレスの数だけカウントしたいのですがそこもうまくいっていません。 @を含む一文だけを読み取るようにしたいです。 import java.io.*; public class Email11 { public static void main(String[] argv) throws Exception { String input = "fileContainingEmails.txt"; String output = "copyPasteMyEmails.txt"; BufferedReader cin; cin = new BufferedReader(new InputStreamReader(System.in)); String userInput; System.out.println("Enter input file name [default name: fileContainingEmails.txt]"); userInput = cin.readLine(); if (userInput.equals("")) userInput = input; String name; if (userInput.equals(input)) name = output; else name = userInput; String userOutput; System.out.println("Enter output file name [default name: " + name + " ]"); userOutput = cin.readLine(); if (userOutput.equals("")) userOutput = name; System.out.println("Input FIle : " + userInput); System.out.println("Output FIle : " + userOutput); BufferedReader fin; fin = new BufferedReader(new FileReader(userInput)); String lineFromFile = ""; while (true) { if (!fin.ready()) break; fin.readLine(); lineFromFile = fin.readLine(); System.out.println(lineFromFile.substring(0, lineFromFile.indexOf('@')+1)); PrintWriter fout; fout = new PrintWriter(new FileWriter(userOutput, true)); fout.println(lineFromFile.substring(0, lineFromFile.indexOf('@')+1)); fout.close(); } fin.close(); int count = 0; for (int p = 0; p < lineFromFile.length(); p++) { if (lineFromFile.equals('@')); count++; } if (count == 0) System.out.println("Sorry, no email addresses were found in the file " + userInput); else System.out.println(count + "email addresses were found, and copied to " + userOutput); どのように書き直したらよいのでしょうか?

    • ベストアンサー
    • Java
  • java プログラミング

    以下のプログラムを改良したいのですがどの用に書き換えればいいかわからないので皆さんの力を貸してください。 1.最後に表示されるメールアドレスの後には;を表示しない。 2.コンマやセミコロンなどで区切られているメールアドレスも認識する(現段階では二つのアドレスの間にスペースがないと認識できません)aaa@bbb.ccc,AAA@BBB.CCC;AaA@BbB.CcCを認識する。 3. メルアドレスだけが一列ごとに並んでいるものを認識する。 aaa@bbb ccc@ddd eee@fffなどです。 メールアドレスの検出の仕方として@から前後にスペースがあるまでループするようにしてあるので上記の場合うまく働きません。以上の三点をみたすように改良するのに必要なコードブロックを教えてください。 プログラミング初心者なのでなるべく簡単に説明していただけると幸いです。 import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.InputStreamReader; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; public class Email { @SuppressWarnings("unchecked") public static void main(String[] argv) throws Exception { String input = "fileContainingEmails.txt"; String output = "copyPasteMyEmails.txt"; BufferedReader cin; cin = new BufferedReader(new InputStreamReader(System.in)); String userInput; System.out.println("Enter input file name [default name: " + input + " ]"); userInput = cin.readLine(); if (userInput.equals("")) userInput = input; String name; if (userInput.equals(input)) name = output; else name = userInput; String userOutput; System.out.println("Enter output file name [default name: " + name + " ]"); userOutput = cin.readLine(); if (userOutput.equals("")) userOutput = name; System.out.println("Input FIle : " + userInput); System.out.println("Output FIle : " + userOutput); BufferedReader fin; fin = new BufferedReader(new FileReader(userInput)); PrintWriter fout; fout = new PrintWriter(new FileWriter(userOutput, true)); String lineFromFile = ""; List listOfMail = new ArrayList(); int indexOfAt = 0; int s = 0,e = 0; while (fin.ready()) { lineFromFile = fin.readLine(); indexOfAt = lineFromFile.indexOf('@',indexOfAt); while(indexOfAt > 0) { for(int i = 0;lineFromFile.charAt(indexOfAt - i) != ' ';i++) s = indexOfAt - i; for(int i = 0;lineFromFile.charAt(indexOfAt + i) != ' ';i++) e = indexOfAt + i; if(listOfMail.indexOf(lineFromFile.substring(s,e).toLowerCase()) < 0) { listOfMail.add(lineFromFile.substring(s,e).toLowerCase()); fout.println(lineFromFile.substring(s,e).toLowerCase()); System.out.print(lineFromFile.substring(s,e)); System.out.println(";"); } indexOfAt = lineFromFile.indexOf('@',indexOfAt + 1); } } fin.close(); fout.close(); System.out.println(); int count = 0; count = listOfMail.size(); if (count == 0) System.out.println("Sorry, no email addresses were found in the file " + userInput); else System.out.println(count + " email addresses were found, and copied to " + userOutput); System.out.println("Open " + userOutput + " and copy and paste those e-mail addresses into the to, cc, or bcc field."); System.out.println("Pasting into bcc field is the best way because everyone's email address does not appear in the message."); } }

  • ジャヴァ基礎問題

    import java.io.*; public class Email11 { public static void main(String[] argv) throws Exception { String input = "fileContainingEmails.txt"; String output = "copyPasteMyEmails.txt"; BufferedReader cin; cin = new BufferedReader(new InputStreamReader(System.in)); String userInput; System.out.println("Enter input file name [default name: fileContainingEmails.txt]"); userInput = cin.readLine(); if (userInput.equals("")) userInput = input; String name; if (userInput.equals("")) name = output; else name = input; String userOutput; System.out.println("Enter output file name [default name: " + name + " ]"); userOutput = cin.readLine(); if (userOutput.equals("")) userOutput = name; System.out.println("Input FIle : " + userInput); System.out.println("Output FIle : " + userOutput); } } このプログラムでユーザーがインプットファイル名を入力した場合そのファイル名がアウトプットファイルのデフォルトになるという形にしたいのですがどこが間違っていますか? ユーザーがデフォルトのインプットファイル名を選んだ場合デフォルトのアウトプットファイル名が適応されます。

  • JAVAのプログラムについて

    独学でJAVAを勉強中なのですが、 import java.io.*; public class ExserciseD5L3_2{ public static void main(String args[]){ BufferedReader br = new BufferedReader(newInputStreamReader(System.in),1); try{ System.out.println("■■■計算クイズ■■■"); System.out.println("計算してください。"); String Que[] = {"10×50=?","21-7=?","360÷6=?"}; int Ans[] = {500,14,60}; int counter; for(counter = 0; counter <=2; counter++ ){ System.out.println(Que[counter]); System.out.println("答えは?"); String str = br.readLine(); int i = Integer.parseInt(str); if(i == Ans[counter]){ System.out.println("おめでとう!大当たりです。"); } else{ System.out.println("残念!答えは"+Ans[counter]+"です。"); } } } catch(IOException e){ System.out.println("IOエラーが発生しました。"); } catch(NumberFormatException ne){ System.out.println("入力された数値が正しくないようです。"); } } } これを実行すると ■■■計算クイズ■■■ 計算してください。 10×50=? 答えは? 500 おめでとう!大当たりです。 21-7=? 答えは? 14 おめでとう!大当たりです。 360÷6=? 答えは? 60 おめでとう!大当たりです。 となるのですが、これに おめでとう!正解数は3つです。とか正解数は2つですなどのように 正解数も出るようにするにはどのようにしたらいいのでしょうか?

    • ベストアンサー
    • Java
  • Javaでファイル転送プログラム

    Javaを用いてファイル転送プログラムを作成しています。 http://d.hatena.ne.jp/rintaromasuda/20060327/1143412352 を参考に作成したのですが、うまく転送できません。 プログラムは以下の通り。 ◎サーバ側 import java.net.*; import java.io.*; public class UMLFileServer { public static void main(String[] args) throws IOException{ if (args.length != 2) throw new IllegalArgumentException("An argument should be port and filename"); int servPort = Integer.parseInt(args[0]); String filename = args[1]; System.out.println("Output file name : " + args[1]); //Create FileOutputStream FileOutputStream fout = new FileOutputStream(filename); //Create ServerSocket ServerSocket servSock = new ServerSocket(servPort); int recvMsgSize; //int bufSize = servSock.getReceiveBufferSize(); int bufSize = 32; System.out.println("Size of ReceiveBuffer : " + bufSize); //Socket accepting loop while(true){ System.out.println("Wait for accepting... "); Socket clntSock = servSock.accept(); byte[] byteBuffer = new byte[bufSize]; System.out.println("Accepted client at " + clntSock.getInetAddress().getHostAddress() + " on port " + clntSock.getPort()); //Create InputStream InputStream in = clntSock.getInputStream(); //Read message and print it out int totalByte = 0; while((recvMsgSize = in.read(byteBuffer)) != -1){ System.out.println("Message : " + new String(byteBuffer,0,recvMsgSize)); System.out.println("Size : " + recvMsgSize); //Write to file totalByte = totalByte + recvMsgSize; fout.write(byteBuffer,0,recvMsgSize); } System.out.println("Recieved file size : " + totalByte); clntSock.close(); fout.close(); fout = null; } } } ◎クライアント側 import java.net.*; import java.io.*; public class UMLFileClient { public static void main(String[] args) throws IOException{ if (args.length != 3) throw new IllegalArgumentException("Arguments should be host,port and filepath"); String server = args[0]; int serverPort = Integer.parseInt(args[1]); String filename = args[2]; byte[] data = new byte[32]; //ソケットの作成 Socket socket = new Socket(server,serverPort); System.out.println("Connected to server"); //ストリームの作成 FileInputStream fin = new FileInputStream(filename); OutputStream out = socket.getOutputStream(); //ファイルの内容を読み出し、送信する System.out.println("Sending file : " + filename); int totalSize = 0; int len = 0; while ((len = fin.read(data)) != -1) { totalSize = totalSize + len; System.out.println(new String(data,0,len)); out.write(data, 0, len); } fin.close(); fin = null; System.out.println("size of file : " + totalSize); socket.close(); } } ◎実行結果 Output file name : hiroyasu.txt Size of ReceiveBuffer : 32 Wait for accepting... Accepted client at 192.168.71.104 on port 36608 Recieved file size : 0 Wait for accepting... 以上です。どなたか解決方法をご教授ください。

    • ベストアンサー
    • Java
  • 下記のようなjavaのプログラムで、* や / を入力しても,

    下記のようなjavaのプログラムで、* や / を入力しても, 必ず判定がfalseのほうになるんですけど、どうすれば良いですか? あまりjavaには詳しくないので、分かりやすく教えていただければ幸いです。お願いします。 import java.io.*; public class test{ public static void main(String[] args) throws IOException{ BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); String a; a = input.readLine(); if((a == "*") ^ (a == "/")){ System.out.println("OK"); }else{ System.out.println("エラー"); } } }

    • ベストアンサー
    • Java
  • javaのプログラムについて

    以下のプログラムを実行するとエラーが起こるのですが原因はなんですか? class Tokuten { private String name; private int eng; private int math; private int sci; public void setData(String n, int e, int m, int s) { if(g>0 && g <1000){ name = n; eng = e; math = m; sci = s; } void show() { System.out.println("受験生の名前は" + name + "です。"); System.out.println("英語は" + eng + "点です。"); System.out.println("数学は" + math + "点です。"); System.out.println("理科は" + sci + "点です。"); } } class TokutenMain { public static void main(String[] args) { Tokuten jukensei = new Tokuten(); jukensei.setData("Hanako",81,67,78); jukensei.show(); } }

  • javaについて

    以下のようにキーボードから入力していくプログラムを試行しているのですが、エラーが出てくるので行き詰まっています。 理想的にはキーボードに”あいう”エンター”えおか”エンターと打ち込んだら str[0]=あいう str[1]=えおか と表示させていきたいのですが、よろしくお願いします。 import java.io.*; import java.lang.*; import java.net.*; import java.awt.*; class gugu2 { public static void main(String[] args) throws IOException { int i=0; while(i<2){ System.out.println("キーワード入力"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String input = br.readLine(); char str[] = input.toCharArray(); System.out.println("キーワードは" + str[]); i=i+1; } for(i=0;i<2;i++){ System.out.println(str[]); } } } これがエラー表示です。 gugu2.java:17: '.class' がありません。 System.out.println("キーワードは" + str[]); ^ gugu2.java:21: '.class' がありません。 System.out.println(str[]); ^ エラー 2 個

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

    「これならわかるJava」という本でjavaを勉強してます。 以下のソースコードをコンパイルした所、 「注:DogList.java の操作は、未チェックまたは安全ではありません。 注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください」 と、表示されます。 ネットで色々と調べてみましたが上手く行きません。 よろしくお願い致します。 import java.io.*; import java.util.*; class Dog { private String name; private int energy; public Dog(String n, int e){ name = n; if(e < 0) e = 0; energy = e; } public Dog(){ this("未定",50); } public void bark(){ if(energy == 0){ System.out.println("お腹が減ってほえられないよ。"); return; } System.out.println("わん、わん!"); energy--; } public void intro(){ System.out.println("僕の名前は" + name + "だ。わん。"); System.out.println("エネルギーは" + energy +"だ。わん。"); } public void eat(int e){ if(e < 0){ System.out.println("マイナスは与えられません。"); return; } energy += e; } public String getName(){ return name; } public void setName(String n){ name = n; } public int getEnergy(){ return energy; } public void setEnergy(int e){ if(e < 0) e = 0; energy = e; } public String toString(){ return "僕の名前は" + name + "だ。わん。\n" +"エネルギーは" + energy + "だ。わん。" ; } } class DogList { public static void main(String[] args) throws IOException { Vector dogs = new Vector(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str, name; int n, energy; for(;;){ System.out.println("名簿:どうしますか?"); System.out.println("1 一覧 2 追加 3 終了"); str = br.readLine(); n = Integer.parseInt(str); if(n == 1){ for(int i = 0; i < dogs.size(); i++){ ((Dog)dogs.elementAt(i)).intro(); System.out.println("-----"); } } else if(n == 2){ System.out.println("名前を入力:"); name = br.readLine(); System.out.println("エネルギーを入力:"); str = br.readLine(); energy = Integer.parseInt(str); dogs.addElement(new Dog(name, energy)); } else{ break; } } } }

    • ベストアンサー
    • Java
  • JAVAプログラムで質問です

    下のように作動するJAVAプログラムを作成して欲しいと言われたのですが、私には良く分かりませんでした。 プログラムについて分かる方!是非、このプログラムを下のように動くように改良していただけないでしょうか? 宜しくお願い致します。 今の状態は、 --- こんにちは。私はコンピュータです。 あなたの名前を入力してください。 やまもと←入力してエンター やまもとさん。よろしく。 --- となりますが、10秒間、入力しない場合には、 >>の部分が何度も繰り返されるようにしたいのですがどのようなプログラムになりますか? --- こんにちは。私はコンピュータです。 あなたの名前を入力してください。 >>まだ~。早く入力して~。 >>あなたの名前を入力してください。 --- import java.io.*; class Hello2 { public static void main(String[] args) throws Exception { System.out.println("こんにちは。私はコンピュータです。"); System.out.println("あなたの名前を入力してください。"); String name; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); name = br.readLine(); System.out.println(name + "さん。よろしく。"); br.close(); } }

    • ベストアンサー
    • Java