Не удается зациклить при использовании методов в Java - PullRequest
1 голос
/ 07 августа 2010

Извините за это, ребята, но мне действительно не повезло сегодня.Пожалуйста, помогите, моя проблема некоторое время назад заключалась в том, что у меня проблемы во время цикла, а теперь он вообще не может работать.Это не позволит мне ввести строку, чтобы она зациклилась.Имя, год и раздел также выводятся как ноль.Я также пытался использовать try catch, но, похоже, он не обнаруживает никаких ошибок.Вот и вся программа.Он просто заканчивается, точно на:

введите 1, чтобы продолжить;

import java.util.*;

public class program
{
     public static Scanner rew= new Scanner(System.in);
    public static String name, yearandsec;
    public static char sex_code;

    public static int scode;
    public static double seq;
    public static int ccode;
    public static int units;
    public static double fee_per_unit;
    public static double misc;
    public static double gross;
  public static String dec;


    public static String decision;

    public static void main(String[] args) {
        String dec;
        do {
            System.out.println("Input info:");
            String name = stringGetter("Name: ");
            String yearandsec = stringGetter("Year and section: ");

 sex_code=charGetter("Sex code: " + "\n"  + "[M]" + "\n" + "[F]:");
        scode=intGetter("Scholarship code: ");
        ccode=intGetter("Course code: ");
        units=intGetter("Units: ");

        fee_per_unit=doubleGetter("Fee per unit: ");
        misc=doubleGetter("Miscellaneous: ");
        display();
         switches(scode, units, fee_per_unit, misc);

            dec = stringGetterz("Enter 1 to continue: ");
        } while(dec.equals("1"));
    }

    public static String stringGetterz(String ny){
        System.out.println(ny);
        return rew.nextLine();
    }


  public static char charGetter(String cg){
        String sc;
        char cc;
        System.out.print(cg);
        sc=rew.nextLine();
        cc=sc.charAt(0);
        return cc;

    }




   public static void switches(int scholar, int u, double fpu, double mi){
        double discnt=0;
        switch(scholar){
                case 1:
                    System.out.println("Scholarship: Full Scholar..");
                    discnt=1;
                    break;
                case 2:
                    System.out.println("Scholarship: Half Scholar..");
                   discnt=.50;
                    break;
                case 3:
                    System.out.println("Scholarship: Dean's Lister..");
                   discnt=.15;
                    break;
                case 4:
                    System.out.println("Scholarship: None..");
                   discnt=0;
                    break;
        }

        double gf;
        double disc;
        disc =(u * fpu) *discnt;
        gf=(u * fpu) + mi - disc;
       System.out.println(gf);


    }

    public static void switchcase(char gender, int corz){
        double discnt=0;
        switch(gender){
                case 'M':
                case 'm':
                    System.out.println("Sex: Male");
                    break;
                case 'F':
                case 'f':
                    System.out.println("Sex: Female");
                    break;
            }




            switch(corz){
                case 1:
                     System.out.println("Course: BSIT...");

                    break;
                case 2:
                     System.out.println("Course: BSCS..");
                     break;
                case 3:
                     System.out.println("Course: BSCOE..");
                     break;


            }




    }



    public static void display(){
        System.out.println("Name: " + name + "\n" + "Year and Section: " + yearandsec);
        System.out.println("Units enrolled: " + units + "\n" + "Fee per unit: " + fee_per_unit + "\n" + "Miscellaneous: " + misc);
        switchcase(sex_code, ccode);







    }

    public static double doubleGetter(String dg){
        double fm;
        System.out.println(dg);
        fm=rew.nextDouble();
        return fm;


    }
    public static int intGetter(String scu){
        int iget;
        System.out.println(scu);
        iget=rew.nextInt();
        return iget;

    }

    public static String stringGetter(String ny){
       String sget;
        System.out.println(ny);
       sget=rew.nextLine();
       return sget;

    }

}

1 Ответ

1 голос
/ 07 августа 2010

Статические поля инициализируются при первой инициализации экземпляра класса, поэтому до тех пор, пока вы не наберете new program(), эти поля не будут существовать.Кроме того, эти поля не будут существовать в основной функции.переименуйте текущий метод main в что-то вроде run, а затем используйте следующий метод в качестве основного:

public static void main(String args[]){
    program p = new program();
    p.run();
}

РЕДАКТИРОВАТЬ: По-видимому, я не прав, код может работать.Очевидно, с тех пор, как вы его запустили ...

Ваша проблема исправлена ​​путем изменения rew.nextLine() на rew.next() в stringGetterz.Не знаю почему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...