2

私の問題は、文字列として宣言されたメッセージを、真か偽かに応じて表示しようとしていることです。正しい値を返さない文字列は次のとおりです。snakeYearMsg

私はこの文字列が一日中目的の値を返そうとしていましたが、役に立ちませんでした。最後に、SNAKE_YEAR の利用可能なすべての可能性をリストすることで、強引な方法を試しました。

このプログラムでは、ユーザーがデータを入力し、その入力に応じて「Essscore」を計算します。私の問題は、ユーザーへのデータの最後の出力が、ユーザーが「巳年」(中国の干支の巳年) に生まれたことを一貫して表示することです。

このプログラムは私が忘れていた課題のためのものであり、締め切りが近づいているので、どんな助けも大歓迎です.

コードはここにあります:

/*Program designed by Some guy
*for KXT101 Assignment Number One*/


 import java.util.Scanner;
 public class AssigOne113

{
public static void main (String[] args)   
{
        final int CURRENT_YEAR = 2013;
        final int CALENDER_ROTATION = 12;
        final int SNAKE_YEAR = CURRENT_YEAR | 2001 | 1989 | 1977 | 1965 | 1953 | 1941 | 1929 | 1917 | 1905 | 1893 | 1881 | 1869 |
                                1857 | 1845 | 1833 | 1821 | 1809 | 1797 | 1785 | 1773 | 1761 | 1749 | 1737 | 1725 | 1713 | 1701 |
                                1689 | 1677 | 1665 | 1653 | 1641 | 1629 | 1617 | 1605 | 1593 | 1581 | 1569 | 1557 | 1545 | 1533 |
                                1521 | 1509 | 1497 | 1485 | 1473 | 1461 | 1449 | 1437 | 1425 | 1413 | 1401 | 1389 | 1377 | 1365 |
                                1353 | 1341 | 1329 | 1317 | 1305 | 1293 | 1281 | 1269 | 1257 | 1245 | 1233 | 1221 | 1209 | 1197 |
                                1185 | 1173 | 1161 | 1149 | 1137 | 1125 | 1113 | 1101 | 1089 | 1077 | 1065 | 1053 | 1041 | 1029 |
                                1017 | 1005 | 993  | 981  | 969  | 957  | 945  | 933  | 921  | 909  | 897  | 885  | 873  | 861  |
                                849  | 837  | 825  | 813  | 801  | 789  | 777  | 765  | 753  | 741  | 729  | 717  | 705  | 693  |
                                681  | 669  | 657  | 645  | 633  | 621  | 609  | 597  | 585  | 573  | 561  | 549  | 537  | 525  |
                                513  | 501  | 489  | 477  | 465  | 453  | 441  | 429  | 417  | 405  | 393  | 381  | 369  | 357  |
                                345  | 333  | 321  | 309  | 297  | 285  | 273  | 261  | 249  | 237  | 225  | 213  | 201  | 189  |
                                177  | 165  | 153  | 141  | 129  | 117  | 105  | 93   | 81   | 69   | 57   | 45   | 33   | 21   |
                                9;
        final int SUMMER_MONTH_JAN = 1;
        final int SUMMER_MONTH_FEB = 2;
        final int SUMMER_MONTH_DEC = 12;
        final int AUTUMN_MONTH_MAR = 3;
        final int AUTUMN_MONTH_APR = 4;
        final int AUTUMN_MONTH_MAY = 5;                         
        final int WINTER_MONTH_JUN = 6;
        final int WINTER_MONTH_JUL = 7;
        final int WINTER_MONTH_AUG = 8;                     
        final int SPRING_MONTH_SEP = 9;
        final int SPRING_MONTH_OCT = 10;
        final int SPRING_MONTH_NOV = 11;
        final int SIXTH_DAY = 06;
        final int SEVENTH_DAY = 07;
        final int JANUARY = 1;
        final int FEBUARY = 2;
        final int MARCH = 3;
        final int APRIL = 4;
        final int MAY = 5;
        final int JUNE = 6;
        final int JULY = 7;
        final int AUGUST = 8;
        final int SEPTEMBER = 9;
        final int OCTOBER = 10;
        final int NOVEMBER = 11;
        final int DECEMBER = 12;
        final int CALENDER_MAX = 12;

        Scanner sc;

        String essscorecalculate;
        String essscorerepeat;
        String userName;
        int birthYear;
        String junk;

        int yob;
        int day;
        int month = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
        int essscore = 0;
        String summer = "Summer";
        String autumn = "Autumn";
        String winter = "Winter";
        String spring = "Spring";
        String seasonBorn = "any season";
        String monthBorn = "any month";
        String snakeYearMsg = "the year";

        boolean snakeYearBool;
        boolean haveS;

        double birthDay;

        char initial;

        //program begins

        System.out.println(" ");
        System.out.println("<------------------------------------------->");
        System.out.println("Sammy Snakes Sixth/Seventh Spring Of Success");
        System.out.println("<------------------------------------------->");
        System.out.println(" ");

        System.out.println("<------------------------------------------->");
        System.out.println("    I can calculate an Ess-Score for you     ");    
        System.out.println("   Would you like to calculate an Ess-Score? ");
        System.out.println("<------------------------------------------->");
        sc = new Scanner(System.in);
        essscorecalculate = sc.nextLine();
        {
            /*essscore.Reset;*/
            {

            }
        }
        System.out.println("<------------------------------------------->");
        System.out.println("         To begin, what is your name?        ");
        System.out.println("<------------------------------------------->");
        userName = sc.nextLine();
        initial =(userName.charAt(0));
        {
            if (initial == 'S')
                essscore =+ 4;
            if (initial == 's')
                essscore =+ 4;                  

        }
        System.out.println("<----------------------------------------------------------------->");
        System.out.println("  What year were you born? (Please enter in following format XXXX) ");
        System.out.println("<----------------------------------------------------------------->");
        birthYear = sc.nextInt();
        junk = sc.nextLine();
        {
            {
                if (birthYear == SNAKE_YEAR)
                    snakeYearBool = true;
                /*  essscore =+ 16; */      
                else if (birthYear != SNAKE_YEAR)
                    snakeYearBool = false;
            }
                {
                    if (snakeYearBool = false)
                        snakeYearMsg = "A non Snake year";
                    if (snakeYearBool = true)
                        snakeYearMsg = "Snake year";

                if (birthYear != SNAKE_YEAR)
                    essscore ++;            
                }
            }
        System.out.println("<--------------------------------------------------------------------->");
        System.out.println("Please enter your birthday (please enter in the following format DD.MM)");
        System.out.println("<--------------------------------------------------------------------->");
        birthDay = sc.nextDouble();
        junk = sc.nextLine();

            {
                {
                    day = (int)birthDay;
                        if (day == SIXTH_DAY)
                            essscore =+ 8;
                        if (day == SEVENTH_DAY)
                            essscore =+ 8;
                }
                {
                    month = ((int)Math.round(100*birthDay))%100;
                        /*System.out.print(month);*/
                }

                    {
                        if (month == 1)
                            monthBorn = "January";
                        if (month == 2)
                            monthBorn = "Febuary";
                        if (month == 3)
                            monthBorn = "March";
                        if (month == 4)
                            monthBorn = "April";
                        if (month == 5)
                            monthBorn = "May";                      
                        if (month == 6)
                            monthBorn = "June";                     
                        if (month == 7)
                            monthBorn = "July";                     
                        if (month == 8)
                            monthBorn = "August";                       
                        if (month == 9)
                            monthBorn = "September";                        
                        if (month == 10)
                            monthBorn = "October";                      
                        if (month == 11)
                            monthBorn = "November";                     
                        if (month == 12)
                            monthBorn = "December";                     
                    }

                {
                    if (month == SPRING_MONTH_SEP)
                        essscore =+2;
                    if (month == SPRING_MONTH_OCT)
                        essscore =+2;
                    if (month == SPRING_MONTH_NOV)
                        essscore =+2;                                                                       
                    {

                    if (month == SPRING_MONTH_SEP)                                                                                                                  
                        seasonBorn = "Spring";
                    else if (month == SPRING_MONTH_OCT)                                                                                                                 
                        seasonBorn = "Spring";
                    else if (month == SPRING_MONTH_NOV)                                                                                                                 
                        seasonBorn = "Spring";                      
                    else if (month ==AUTUMN_MONTH_MAR)
                        seasonBorn = "Autumn";
                    else if (month ==AUTUMN_MONTH_APR)
                        seasonBorn = "Autumn";
                    else if (month ==AUTUMN_MONTH_MAY)
                        seasonBorn = "Autumn";                          
                    else if (month == WINTER_MONTH_JUN)
                        seasonBorn = "Winter";
                    else if (month == WINTER_MONTH_JUL)
                        seasonBorn = "Winter";
                    else if (month == WINTER_MONTH_AUG)
                        seasonBorn = "Winter";                                                      
                    else if (month == SUMMER_MONTH_JAN)
                        seasonBorn = "Summer";
                    else if (month == SUMMER_MONTH_FEB)
                        seasonBorn = "Summer";
                    else if (month == SUMMER_MONTH_DEC)
                        seasonBorn = "Summer";                          
                    }
                }       
            }
        System.out.println("<------------------------------------------------>");   
        System.out.println(""+userName+" was born in "+seasonBorn+" on "+monthBorn+" "+day+" in "+snakeYearMsg+" "+birthYear+" ");
        System.out.println(""+essscore+""); 
        System.out.println("<------------------------------------------------>");

        System.out.println("<------------------------------------------------>");
        System.out.println("  Would you like to calculate another Ess-Score?  ");
        System.out.println("<------------------------------------------------>");
        essscorerepeat = sc.next();
}   

}

4

2 に答える 2

0

コードには 2 つの主な問題があります。

1 つは、ビット単位または多数の整数を処理しようとしていて、それらをすべてチェックするかのように扱っていることです。残念ながら、Java はそれを行いません。そのため、誕生年が蛇年かどうかを確認したい場合は、モジュラス演算子を実行する必要があります。これは、次の行を使用して実現できます。

if (((birthYear - 9) %12) == 0)

それ以外の

 if (birthYear == SNAKE_YEAR)

もう 1 つの主な問題は、snakeYearBool が false か true かを確認するときに、2 = の代わりに 1 つの = を使用したことです。そのため、2 番目の if ステートメントで snakeYearBool を true に初期化するため、常に true が返されます。したがって、これらの行を次のように変更します。

if (snakeYearBool == false)
                    snakeYearMsg = "A non Snake year";
if (snakeYearBool == true)
                    snakeYearMsg = "Snake year";

そして、それはあなたの問題を解決するはずです. 幸運を!

于 2013-04-17T05:59:54.663 に答える