2010-08-07 37 views
1

对不起,对不起,我今天真的很不走运。 请帮忙,我前一阵子的问题是我在循环时遇到了问题,现在它根本无法循环。它不会让我输入字符串使其循环。 名称和year和section也输出为null。我也尝试使用try catch,但它似乎没有收集任何错误。 这是整个程序。它只是终止,正好:在java中使用方法时无法循环使用

输入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; 

    } 

} 
+0

我不确定这是否可行,但尝试在主方法内初始化'rew'。 – David 2010-08-07 09:42:54

+0

另外,尝试用'Integer.parseInt(dec)== 1'替换'dec.eq​​uals(“1”)'。 – David 2010-08-07 09:45:26

+0

请问您可以重新输入密码吗? – 2010-08-07 09:51:32

回答

1

静态字段都被初始化你第一次初始化类的一个实例,因此,直到您new program(),这些字段将不存在。而且,这些字段不会存在于主函数中。您目前的主要方法重命名为类似run然后使用以下内容作为主要方法:

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

编辑:显然我错了,代码可以运行。很明显,你运行它...

你的问题是通过更改rew.nextLine()rew.next()stringGetterz修复。不知道为什么。

+0

感谢它现在好了。我会看到背后的真正问题是什么,如果我足够幸运:} – user225269 2010-08-07 10:25:54