0
import java.io.*;
import java.util.*;

    public class volumeConeD

{//class
    public static void main (String [] args)
        {//main
            Scanner keyBoard = new Scanner(System.in);//input for keyBoard
        //variables
    double volume;
    double radius;
    double hieght;
    double oneThird = 0.3333;
    double pie = 3.14;
    double yes = 1.0;
    boolean r = true;

try
    {//begin of try
    while(r == true){
    System.out.print("Volume of a Cone... V=1/3(3.14)r^2(h)");
    System.out.println ();
    System.out.println ();

    radius = getRadius(radius);//call to method
    radius = keyBoard.nextDouble ();
System.out.print("Enter a Height      ");
hieght = keyBoard.nextDouble ();
            //math
        volume = oneThird * pie * radius * radius * hieght;
        System.out.printf ("Volume =       " + volume);
                                }//end of try                                           

            catch (Exception Error){
            System.out.println("You entered wrong data");
            }
            System.out.println ();
        System.out.print("Does the user wish to try again?");
        System.out.println ();
        System.out.print("Enter 1 to go again OR any other key to end.");
        yes = keyBoard.nextDouble();
        }//end of while


}//end of main
public static double getRadius(double mRadius)
{
    System.out.print("Enter Radius Squared Number      ");

return mRadius; 
    }
}//end of program

このフォーラムに投稿するのはこれが初めてなので、質問方法をお許しください...ここに行きます...これでやろうとしているのは、センチネルメソッド(whileループ)を使用してユーザー制御の下でこの問題を繰り返すことだけです。以前はほとんど機能していましたが、「r」の定義方法についてエラーが発生し続けました。これで、catch try ブロックに関するエラーが発生します。助けてください。

volumeConeD.java:35: error: 'catch' without 'try'
            catch (Exception Error){
            ^
volumeConeD.java:35: error: ')' expected
            catch (Exception Error){
                            ^
volumeConeD.java:35: error: not a statement
            catch (Exception Error){
                  ^
volumeConeD.java:35: error: ';' expected
            catch (Exception Error){
                                  ^
volumeConeD.java:19: error: 'try' without 'catch', 'finally' or resource declarations
try
^
5 
4

5 に答える 5

0

これはあなたの問題のようです

try
{
    while (...)
    {
       int blammo;

       try
       {
           ... code
           blammo = 9;
       }
       catch ...
       {
          // catching here means that the while loop will continue looping.
       }

       System.out.println("Blammo: " + blammo); // This results in the error: variable
       // blammo might not have been initialized.   This is because the assignment
       // "blammo = 9" is inside the try block and if an exception was thrown before
       // the assignment then it (the assignment)  will never execute and blammo will
       // be uninitialized.

    } // end of while loop

} // end of outter try
catch ...
{
   // catching here means that the exception exits the while loop.
}
于 2013-09-06T22:13:48.890 に答える
0

catch を使用していますが、try と一致しません... oneThird 変数は 1/3 (より精度) として設定できます。PI についても同様で、Math ライブラリには既に PI 定義があります。関数 getRadius は役に立たないので、削除するか、ユーザーに 2 倍の数値を入力するよう求める関数に置き換える必要があります。

import java.util.Scanner;

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double volume, radius, height, oneThird = (1.0 / 3);
        int continueExecution = 1;

        try {
            while (continueExecution == 1) { // same as r == true (redundant)
                System.out.println("Volume of a Cone... V=1/3(3.14)r^2(h)\n\n"); // '\n' is the newline character
                radius = getDoubleValue(sc, "Enter radius : ");
                height = getDoubleValue(sc, "Enter height : ");
                volume = oneThird * Math.PI * Math.pow(radius, 2) * height;
                System.out.println("Volume = " + volume + "\nEnter 1 to start again, or another number to exit: ");
                continueExecution = sc.nextInt();
            }
        } catch (Exception e) { // Pokemon exception handling !
            System.err.println(e.getMessage());
        }
    }

    public static double getDoubleValue(Scanner sc, String msg) {
        System.out.print(msg);
        return sc.nextDouble();
    }
于 2013-09-06T22:15:45.297 に答える
0

あなたのコメント// end of tryが実際に言うべきだと言っているところと// end of while、その逆です。

于 2013-09-06T21:57:10.993 に答える