javaを勉強し始めたばかりの初心者です。
テキストを購入して以下のコードをテキストに習ってなぞってみたのですが、なぜかfinallyのあとの変数isrに対して「シンボルが見つかりません」というエラーが出ます。なぜ他の部分のisrは問題なくて、finallyのあとのisrに対してのみエラーが出てしまうのでしょうか?
どうしてもわからないので教えていただけないでしょうか。
import java.io.*;
import java.net.*;
public class Main{
public static void main(String[] args){
URL url =null;
try{
url = new URL("http://ooooo.jp");
InputStream is = url.openStream();
InputStreamReader isr= new InputStreamReader(is);
int i = isr.read();
while(i !=-1){
System.out.print((char) i);
i=isr.read();
}
}catch(IOException e){
System.out.println("Error happening");
}finally{
isr.close();
}
}
}
No.1ベストアンサー
- 回答日時:
isrはtryのブロックの中で宣言されているので
tryのブロックの外では使えません。
tryの外で宣言しましょう。
Javaのスコープル-ルを学びましょう。
それから
is = url.openStream();
や
isr= new InputStreamReader(is);
をtryブロックの中で実行するのはまずい。
エラーが起きたらどういう流れになるか
よく考えましょう。
外で実行するか、isやisrを予めnuIlで初期化しておいて
finallyで閉じる前にnuIlチェックすること。
またfinallyで閉じるべきはisの方です。
ありがとうございます。tryの外で宣言しなければならない意味がわかりました。
勉強になりました。
もう一方の
is = url.openStream();
や
isr= new InputStreamReader(is);
をtryブロックの中で実行するのはまずい。
という部分なのですが、外で実行することで何が変わってくるのかが理解できませんでした。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Java java final 1 2022/06/10 22:49
- 英語 Nonetheless, no technique showed superiority in te 2 2022/12/14 12:15
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java Java 配列<選挙> 4 2023/07/31 15:07
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
yyyymmddからyyyy/mm/d...
-
csv出力について
-
テキストファイルの読み書き
-
テキストファイルの任意の文字...
-
InputStream.read()でタイムア...
-
Class.forNameでエラーになる
-
[JAVA]エラーが解決できません。
-
java連結
-
九九を横に表示する。
-
入力文字列が数字かどうかの判別
-
equalsの逆
-
C言語のポインターに関する警告
-
オブジェクトの中のプロパティ...
-
ダブルクォーテーションのrepla...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
javaで質問です。 文字列2023/2...
-
Visual Basic でのコードをASCI...
-
[JAVA]try 内の変数を外で!?
-
JSPやサーブレットでSystem.out...
-
ORA-01858: 数値を指定する箇所...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
csv出力について
-
yyyymmddからyyyy/mm/d...
-
equalsの逆
-
InputStream.read()でタイムア...
-
[JAVA]エラーが解決できません。
-
テキストファイルから空白行をよむ
-
九九を横に表示する。
-
Javaの質問です。テキストファ...
-
Class.forNameでエラーになる
-
javaのfor文が機能してないみた...
-
FileクラスのcanRead/canWrite...
-
テキストファイルの任意の文字...
-
Javaでデータに登録する度にID...
-
Java int sum = 0は必要ですか?
-
テキストファイルにおいて任意...
-
javaのファイル読み込み時の文...
-
ObjectInputStreamとStreamCorr...
-
BufferedReaderでのエラー
-
Servletでテキストボックスに入...
-
テキストファイルの読み書き
おすすめ情報