1
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 second time: ");
    int lTime = in.nextInt();
    int tDifference = Math.abs(fTime - lTime);
    String strTDiff = String.valueOf(tDifference);
    int length = strTDiff.length();
    if (length == 4)
    {
        String hours = strTDiff.substring(0, 2);
        String minutes = strTDiff.substring(3, 5);
    }
    else if (length == 3)
    {
        String hours = strTDiff.substring(0);
        String minutes = strTDiff.substring(2, 4);
    }
    else
    {
        String hours = ("0");
        String minutes = strTDiff.substring(0, 1);
    }
    System.out.println(hours + " hours " + minutes + " minutes");
    }
}

やあみんな、Javaを使って簡単なプログラムを作成して、軍の時間で与えられた2回の違いを見つけ、時間と分で出力を与えようとしています。これをコマンドプロンプトでコンパイルするたびに、最後の印刷行の変数時間と変数分に「シンボルが見つかりません」というエラーが表示されます。ifステートメントの前にそれらを宣言しようと思ったのですが、それもうまくいきませんでした。申し訳ありませんが、プログラミングは非常に初めてであり、提供された支援に感謝します。

4

2 に答える 2

2

ブロック(またはそのようなブロック)内でオブジェクト参照またはプリミティブ変数を定義すると、ifそのブロック内でのみアクセスできます。

以下のように変更します

final String hours, minutes;
if (length == 4)
{
    hours = strTDiff.substring(0, 2);
    minutes = strTDiff.substring(3, 5);
}
else if (length == 3)
{
    hours = strTDiff.substring(0);
    minutes = strTDiff.substring(2, 4);
}
else
{
    hours = ("0");
    minutes = strTDiff.substring(0, 1);
}
于 2013-01-30T02:51:49.607 に答える
1

if ステートメント内で String を呼び出すことにより、それらは if ステートメント内にのみ存在し、if の外で宣言し、if 内で値を関連付ける必要があります。

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 second time: ");
    int lTime = in.nextInt();
    int tDifference = Math.abs(fTime - lTime);
    String strTDiff = String.valueOf(tDifference);
    int length = strTDiff.length();
    String hours = "";
    String minutes = "";

    if (length == 4)
    {
        hours = strTDiff.substring(0, 2);
        minutes = strTDiff.substring(3, 5);
    }
    else if (length == 3)
    {
        hours = strTDiff.substring(0);
        minutes = strTDiff.substring(2, 4);
    }
    else
    {
        hours = ("0");
        minutes = strTDiff.substring(0, 1);
    }
    System.out.println(hours + " hours " + minutes + " minutes");
    }
}

したがって、それらを "" に初期化するか、不要なelseステートメントを削除して、else値に初期化できます

    String hours = "0";
    String minutes = strTDiff.substring(0, 1);

    if (length == 4)
    {
        hours = strTDiff.substring(0, 2);
        minutes = strTDiff.substring(3, 5);
    }
    else if (length == 3)
    {
        hours = strTDiff.substring(0);
        minutes = strTDiff.substring(2, 4);
    }
System.out.println(hours + " hours " + minutes + " minutes");
于 2013-01-30T02:54:44.507 に答える