0

String(birthyear) を int(age) に変換するのに問題があります。誰かに生年月日を入力してもらい、プログラムに簡単な減算計算をさせて年齢を計算してもらいたい。私はプログラミングが初めてなので、いろいろ調べてみましたが、ほとんどの場所で同じことが言われました。

Integer.parseInt(birthyear);

しかし、それをして、計算しようとすると...

int age = year-birthyear;

タイトルにエラーが表示されます。

public class WordGameScanner
{
    public static void main(String[] argus)
    {
        String name;
        String home;
        String birthyear;
        String course;
        String reason;
        String feedback;
        int year = 2013;

        Scanner input = new Scanner(System.in);
        System.out.print("What is your name: ");
        name = input.nextLine();
        System.out.print("Where are you from: ");
        home = input.nextLine();
        System.out.print("What year were you born: ");
        birthyear = input.nextLine();
        Integer.parseInt(birthyear);
        System.out.print("What are you studying: ");
        course = input.nextLine();
        System.out.print("Why are you studying " + course + ": ");
        reason = input.nextLine();
        System.out.print("How is " + course + " coming along so far: ");
        feedback = input.nextLine();

        int age = year-birthyear;

        System.out.println("There once was a person named " + name +
            " who came all the way from " + home +
            " to study for the " + course +
            " degree at --------------.\n\n" + name +
            " was born in " + birthyear + " and so will turn " + age +
            " this year.");
        System.out.println(name + " decided to study the unit ------------, because \"" +
            reason + "\". So far, ----------- is turning out to be " +
            feedback + ".");
    }
}

これが間違った場所にある場合は申し訳ありませんが、これはここでの私の2番目の投稿です。「質問する」をクリックして、指示に従いました >.<

4

4 に答える 4

7
int age = year-Integer.parseInt(birthyear);

呼び出しは、変数をとしてparseInt再定義するのではなく、別の変数(など)に格納したり、上記のように式で使用したりできる値を返すだけです。String birthYearintintint birthYearInt = Integer.parseInt(birthYear);


また、入力について考えるのに少し時間がかかる場合があります。

ユーザーは最後の2桁(「1983」ではなく「83」)だけを入力できるため、次のことができます。

int birthYearInt = Integer.parseInt(birthYear);
if (birthYear.length() == 2) {
  // One way to adjust 2-digit year to 1900.
  // Problem: There might not be more users born in 1900 than born in 2000.
  birthYearInt = birthYearInt + 1900; 
}
int age = year = birthYearInt;

java.text.NumberFormatまたは、入力のコンマを適切に処理 するために使用することもできます。NumberFormat人間がコンピュータとは異なる方法で数値をフォーマットする方法を処理するため、人間からの数値を処理するための良い方法です。


もう1つの問題は、これが中国の年齢番号付けシステムを使用していることです。このシステムでは、すべての人の年齢が(グレゴリオ暦ではなく、中国の旧暦の)新年に1ずつ増加します。しかし、これは年齢が世界中で計算される方法ではありません。たとえば、米国やヨーロッパのほとんどの地域では、出生記念日に年齢が上がります。

于 2013-03-04T23:12:13.103 に答える
2
Integer.parseInt(birthyear);

birthyear値を上書きせず、タイプをStringからintに変更しません

だからあなたはしなければならない

int intbirthyear = Integer.parseInt(birthyear);

その後

int age = year-intbirthyear;
于 2013-03-04T23:13:02.477 に答える
0

Integer.parseInt文字列からintに変更birthyearされるのではなく、文字列が表すintを返すだけです。この戻り値を別の変数に割り当て、それを減算に使用する必要があります。

于 2013-03-04T23:13:10.637 に答える
0

Integer.parseInt(birthyear);何にも代入せず に実行した後でbirthyearも、文字列になります。

どちらかを使用 int age = year-Integer.parseInt(birthyear);

また

int ibirthyear = Integer.parseInt(birthyear);
int age = year - ibirthyear;
于 2013-03-04T23:14:25.093 に答える