-6

コメントを追加する前にこの Java プログラムが動作していたのですが、else if ステートメントと else ステートメントでエラーが発生しました。どんな助けでも大歓迎です。

/**
  * A class that takes 2 different times in military time as input and 
  * outputs the difference in hours and minutes.
  *
  * @author Name
  */
import java.util.Scanner;
public class Assignment1Q3
{
    public static void main(String[] args) 
    { 
    Scanner in = new Scanner(System.in);
    System.out.print("Please enter the first time: ");
    int fTime = in.nextInt();
    System.out.print("Please enter the second time: ");
    int lTime = in.nextInt();
    int tDifference = Math.abs(fTime - lTime);//Calculates the absolute difference.
    String strTDiff = String.valueOf(tDifference);//Converts the value to a String.
    int length = strTDiff.length();//Obtains the length of the value.
    String hours = "";//Declares the values to be initialized in the if statement.
    String minutes = "";
    if (length == 4)
    {
        hours = strTDiff.substring(0, 2);/**If the number of digits is 4, the first
        minutes = strTDiff.substring(2, 4);*two are the hour.
     }                                      */
    else if (length == 3)
    {
        hours = strTDiff.substring(0, 1);/**If the number of digits is 3, the first
        minutes = strTDiff.substring(1, 3);*one is the hour.
    }                                      */
    else
    {
        hours = ("0");                   /**If the number of digits is not 4 or  3,
        minutes = strTDiff.substring(0, 1);*the value is less than 1 hour.
    }                                      */
    System.out.println(hours + " hours " + minutes + " minutes");
    }
}
4

6 に答える 6

8

これは}、最後の直前が と の間でelseコメントされているためです。/**/

問題にあるように、適切なコードエディターの色はそれを明らかにするはずです。

于 2013-01-31T18:50:34.437 に答える
3

if、else、elseif の閉じ中括弧をコメントしました。削除します

于 2013-01-31T18:50:36.180 に答える
1

ここの Web サイト (構文の強調表示) で直接確認できるように、これらのいくつかは実際にコメントアウトされています: }. 間違えなければ3つ。それがエラーの原因です。また、コードの 3 行をコメントアウトしています (これは意図的なものかもしれませんが、言及したいと思います)。IDE を使用することをお勧めします。私自身、Eclipse for Javaを使用しています。

Java では、ダブル スラッシュ , を使用して 1 行をコメント アウトでき//ます (ダブル スラッシュの右側はすべてコメント アウトされます)。

于 2013-01-31T18:50:48.177 に答える
1

if、else if、およびelseステートメントのすべてで、閉じ括弧がコメントアウトされています

if (length == 4)
{
    hours = strTDiff.substring(0, 2);/**If the number of digits is 4, the first
    minutes = strTDiff.substring(2, 4);*two are the hour.
}                                      */

ブロック コメントがどのように機能するか正確にわかっていないようです。*コメントは、各行の文字の後に来るテキストにのみ適用されると想定しています。実際には、改行やキャリッジ リターンを含むすべての文字は、*/. 各エントリが次のようになるように、コードを変更することをお勧めします。

if (length == 4)
{
    /* If the number of digits is 4, the first
     * two are the hour.
     */
    hours = strTDiff.substring(0, 2);
    minutes = strTDiff.substring(2, 4);
}         

コメントの 2 行目の星印は必要ないことに注意してください。例えば:

/* If the number of digits is 4, the first
   two are the hour.
 */

これはまだ有効なブロック コメントです。(読みにくいですが)

于 2013-01-31T18:50:56.853 に答える
1

はい。あなたの(コメントを閉じる) は (ブロックを閉じる*/) と同じ行にあるため、コメントの一部になります。また、実行したいと思われるいくつかのコードをコメントアウトします。}if

コメント マーカー/*をブロック*/し、それらの間のすべてを、改行を含めてコメントにします。コードの先頭にあるコメントの新しい各行のアスタリスクは、スタイルと配置のためだけにあり、実際の意味はありません。

于 2013-01-31T18:50:58.007 に答える