0

Say I have the following block of code somewhere:

while(condition){
    try {
        String twoStr= JOptionPane.showInputDialog("Enter two words sep by a space.");
        \\do stuff like splitting and taking an index which may cause out of bound exception
    catch (IOException e) {
        System.out.println("Sorry your words are terrible.");
     }

\\do stuff with twoStr

I cannot access string outside of the try/catch statement, but I don't want to prompt the user to enter another two words in case he messes up and enters a single word. How can I access this value that was initialized in the try block?

4

8 に答える 8

5

文字列は、try/catch ステートメントの外で定義する必要があります。

while(condition){
    String twoStr = null;

    try {
        twoStr= JOptionPane.showInputDialog("Enter two words sep by a space.");
     } catch (IOException e) {
        System.out.println("Sorry your words are terrible.");
     }

     //do stuff with twoStr

このようにして、try/catch ステートメントとその外側のコードの両方が変数を認識します。これをよりよく理解するには、スコープをよく読んでください。

于 2013-09-26T05:50:57.957 に答える
2

try catch の外側で文字列を宣言します。トライキャッチ内で変数を宣言すると、変数のスコープはトライキャッチ内のみとなり、外部では使用できません。

 while(condition){
     String twoStr =null;
    try {
        twoStr= JOptionPane.showInputDialog("Enter two words sep by a space.");
       //do stuff like splitting and taking an index which may cause out of bound exception
       }
    catch (IOException e) {
        System.out.println("Sorry your words are terrible.");
     }
于 2013-09-26T05:52:33.323 に答える
0

String twoStrtry/catch ブロック内で宣言された変数のスコープは、それを含むブロックのスコープ内にないため、try catch ブロックの外部で文字列変数にアクセスすることはできません。これは、他のすべての変数宣言がそれらが含まれるスコープに対してローカルであるのと同じ理由からです。発生する。その変数を try catch ブロックから宣言する必要があります。

于 2013-09-26T05:55:23.213 に答える
0

try-block の外で宣言するだけです。

String twoStr = null;
while(condition){
    try {
        twoStr= JOptionPane.showInputDialog("Enter two words sep by a space.");
        \\do stuff like splitting and taking an index which may cause out of bound exception
    catch (IOException e) {
        System.out.println("Sorry your words are terrible.");
     }

\\do stuff with twoStr
于 2013-09-26T05:52:32.277 に答える