質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

199閲覧

Javaアプレットでテキストを読み込みたい

aiueoaiueoaiue

総合スコア94

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/12/30 16:45

#要件
Javaアプレットでテキストを読み込みたいのですがエラーが出てしまいます。エラーの意味を調べたところ{}の数が合わないだとかスペルミスだとかあったんですけど、私には見つけられませんでした。
#ソース

Java

1import java.applet.Applet; 2 3/*<applet code="test1.class" width="400" height="400"></applet>*/ 4 5public class test1 extends Applet { 6 static ArrayList<Integer> a = new ArrayList<Integer>(); 7 static ArrayList<Integer> b = new ArrayList<Integer>(); 8 static ArrayList<Integer> c = new ArrayList<Integer>(); 9 public void init() { 10 try{ 11 File file = new File("C:\Users\○○\test.txt"); 12 if (checkBeforeReadfile(file)){ 13 BufferedReader br = new BufferedReader(new FileReader(file)); 14 String str; 15 while((str = br.readLine()) != null){ 16 List<Integer> ints = parse_line(str); 17 for (int i = 0; i < 3; i++) { 18 if(i == 0){ 19 a.add(ints.get(i)); 20 } 21 else if(i == 1){ 22 b.add(ints.get(i)); 23 } 24 else{ 25 c.add(ints.get(i)); 26 } 27 } 28 } 29 System.out.println(a+"\t"+b+"\t"+c); 30 br.close(); 31 } 32 else{ 33 System.out.println("ファイルが見つからないか開けません"); 34 } 35 } 36 catch(FileNotFoundException e){ 37 System.out.println(e); 38 } 39 catch(Exception e){ 40 System.out.println(e); 41 } 42 43 private static List<Integer> parse_line(String line) throws Exception { 44 List<Integer> ans = new ArrayList<Integer>(); 45 StringTokenizer st = new StringTokenizer(line, " "); 46 while (st.hasMoreElements()) { 47 String s = st.nextToken(); 48 try { 49 ans.add(Integer.parseInt(s)); 50 } 51 catch (Exception ex) { 52 throw new Exception("Bad Integer in " + "[" + line + "]. " + ex.getMessage()); 53 } 54 } 55 return ans; 56 } 57 58 private static boolean checkBeforeReadfile(File file){ 59 if (file.exists()){ 60 if (file.isFile() && file.canRead()){ 61 return true; 62 } 63 } 64 return false; 65 } 66 } 67 public void start() { 68 System.out.println("start()ですぅ~"); 69 } 70 public void stop() { 71 System.out.println("stop()ですぅ~"); 72 } 73 public void destroy() { 74 System.out.println("destoroy()ですぅ~"); 75 } 76}

#エラーメッセージ
test1.java:43: エラー: 式の開始が不正です
private static List<Integer> parse_line(String line) throws Exception {
^
test1.java:67: エラー: class、interfaceまたはenumがありません
public void start() {
^
test1.java:69: エラー: class、interfaceまたはenumがありません
}
^
test1.java:70: エラー: class、interfaceまたはenumがありません
public void stop() {
^
test1.java:72: エラー: class、interfaceまたはenumがありません
}
^
test1.java:73: エラー: class、interfaceまたはenumがありません
public void destroy() {
^
test1.java:75: エラー: class、interfaceまたはenumがありません
}
^
エラー7個

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

initの閉じカッコがないですね。
行の最初にエラーが出た場合、その直前のセミコロンと閉じカッコに特に着目すると良いです。

また、正しくインデントを付けることでそのようなケアレスミスを未然に防げます。

Java

1public void init() { 2 try{ 3 File file = new File("C:\Users\○○\test.txt"); 4 if (checkBeforeReadfile(file)){ 5 BufferedReader br = new BufferedReader(new FileReader(file)); 6 String str; 7 while((str = br.readLine()) != null){ 8 List<Integer> ints = parse_line(str); 9 for (int i = 0; i < 3; i++) { 10 if(i == 0){ 11 a.add(ints.get(i)); 12 } 13 else if(i == 1){ 14 b.add(ints.get(i)); 15 } 16 else{ 17 c.add(ints.get(i)); 18 } 19 } 20 } 21 System.out.println(a+"\t"+b+"\t"+c); 22 br.close(); 23 } 24 else{ 25 System.out.println("ファイルが見つからないか開けません"); 26 } 27 } 28 catch(FileNotFoundException e){ 29 System.out.println(e); 30 } 31 catch(Exception e){ 32 System.out.println(e); 33 }

ね、足りないでしょ?(手動でちょいちょい書いたのでちょっとずれてそうですが)

また、適切にメソッドを切り分けてネストを減らすことも非常に有効です。
保守性の向上にも繋がるので、積極的に機能の切り分けについて検討すると良いでしょう。

投稿2017/12/30 16:52

編集2017/12/30 16:54
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aiueoaiueoaiue

2017/12/30 23:16

ありがとうございます。仰る通りエラーが消えました。私の中ではstartメソッドのすぐ上の閉じカッコがinitの閉じカッコのつもりだったのですが、それでは何故ダメだったのでしょうか?
LouiS0616

2017/12/31 09:51

Javaではメソッド内部に別のメソッドを置くのは許されていないはずです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問