如何在主方法中插入双精度?

时间:2015-06-30 01:14:07

标签: java if-statement main-method

我正在尝试编写一个计算我的数学和英语GPA的程序。我不能让主要人物识别我的两个花车,mathGpaenglishGpa。它告诉我让它们静止,但让它们变成静态意味着它们变成了弦,我需要它们保持双倍。

import java.util.Scanner;
public class GPA {

    public static void main(String[] args)
    {
        double finalGpa=0;

        mathGpa();
        englishGpa();

        finalGpa= (mathGpa + englishGpa)/2;


    }

    public double mathGpa() {//Begin mathGpa
        int Math;
        double mathGpa = 0;
        System.out.println("Math = ");
        Scanner math = new Scanner(System.in);
        Math= math.nextInt();
        math.close();

        if (Math >100){
            System.out.println("You have mistyped something");
        }
        if (Math >= 94){
            System.out.println("You have an A");
            mathGpa = 4.0;
            System.out.println(mathGpa);
        }
        if (Math < 94 && Math >=90){
            System.out.println("You have an A-");
            mathGpa = 3.7;
            System.out.println(mathGpa);
        }
        if (Math < 90 && Math >=87){
            System.out.println("You have a B+");
            mathGpa = 3.3;
            System.out.println(mathGpa);
        }
        if (Math < 87 && Math >=80){
            System.out.println("You have a B");
            mathGpa = 3.0;
            System.out.println(mathGpa);
        }
        if (Math < 80 && Math >=77){
            System.out.println("You have a B-");
            mathGpa = 2.7;
            System.out.println(mathGpa);
        }
        if (Math < 77 && Math >=73){
            System.out.println("You have a C+");
            mathGpa = 2.3;
            System.out.println(mathGpa);
        }
        if (Math < 73 && Math >=70){
            System.out.println("You have a C");
            mathGpa = 2.0;
            System.out.println(mathGpa);
        }
        if (Math < 70 && Math >=67){
            System.out.println("You have a C-");
            mathGpa = 1.7;
            System.out.println(mathGpa);
        }
        if (Math < 67 && Math >=67){
            System.out.println("You have a D+");
            mathGpa = 1.3;
            System.out.println(mathGpa);
        }
        if (Math < 67 && Math >=63){
            System.out.println("You have a D");
            mathGpa = 1.0;
            System.out.println(mathGpa);
        }
        if (Math < 63 && Math >=60){
            System.out.println("You have a D-");
            mathGpa = 0.7;
            System.out.println(mathGpa);
        }
        if (Math < 60){
            System.out.println("You have a F");
            mathGpa = 1.7;
            System.out.println(mathGpa);
        }

        return mathGpa;
    }//End mathGpa

    public double englishGpa() {//Begin englishGpa
        int English;
        double englishGpa = 0;
        System.out.println("English = ");
        Scanner english = new Scanner(System.in);
        English= english.nextInt();
        english.close();

        if (English >100){
            System.out.println("You have mistyped something");
        }
        if (English >= 94){
            englishGpa = 4.0;
        }
        if (English < 94 && English >=90){
            englishGpa = 3.7;
        }
        if (English < 90 && English >=87){
            englishGpa = 3.3;
        }
        if (English < 87 && English >=80){
            englishGpa = 3.0;
        }
        if (English < 80 && English >=77){
            englishGpa = 2.7;
        }
        if (English < 77 && English >=73){
            englishGpa = 2.3;
        }
        if (English < 73 && English >=70){
            englishGpa = 2.0;
        }
        if (English < 70 && English >=67){
            englishGpa = 1.7;
        }
        if (English < 67 && English >=67){
            englishGpa = 1.3;
        }
        if (English < 67 && English >=63){
            englishGpa = 1.0;
        }
        if (English < 63 && English >=60){
            englishGpa = 0.7;
        }
        if (English < 60){
            englishGpa = 1.7;
        }

        return englishGpa;
    }//End englishGpa

}//End Class

2 个答案:

答案 0 :(得分:0)

使方法静态并不意味着它们成为字符串,它只是意味着可以调用该方法。当你在mathGpa和englishGpa中声明'double'时,你将返回类型设置为double,除非你用'String'切换'double',否则不会改变。另外,如评论中所述(@Greg Hewgill),您应该更改本地变量名称。

有关'静态'click here的更多信息。

有关方法click here

的更多信息

答案 1 :(得分:0)

静态变量

静态变量的值对于类的所有对象(或实例)是相同的。换句话说,您可以认为同一类的所有实例(对象)共享一个静态变量副本 示例#1:

class StaticVariable
{
   static int counter=0;
   public void increment()
   {
       counter++;
   }
   public static void main(String args[])
   {
       StaticVariable objectA = new StaticVariable();
       StaticVariable objectB = new StaticVariable();
       objectA .increment();
       objectB .increment();
       System.out.println("objectA- counter is: "+ objectA.count);
       System.out.println("objectB- counter is: "+ objectA.count);
   }
}

<强>输出:

objectA- counter is: 2
objectB- counter is: 2

类的两个对象共享静态变量计数器的相同副本;这就是为什么它们包含相同的计数器值。

我不认为声明静态变量会改变你提到的变量类型 - 从double到String。

示例#2: 静态变量用于引用所有对象的公共属性(对于每个对象而言不是唯一的)。例如,大学名称,学生姓名等... 在类加载时,它只在类区域中占用一次内存。 使用静态变量的好处是使程序存储器对一种节省存储器有效。

 class Person{  
       int id; 
       String studentName;  
       // a static variable 
       static String collegeName ="MBA";  

       Person(int i,String n)
       {  
        id = i;  
        studentName = n;  
       }  

        void output ()
        {
         System.out.println(id +" "+ studentName +" "+ collegeName);
        }  

     public static void main(String args[])
       {  
        Person student1 = new Person(100,"Joe");  
        Person student2 = new Person(200,"Jef");  

        student1.output();
        student2.output(); 
       }  
    }  

Display:
     100 Joe MBA
     200 Jef MBA

请注意,为类的所有实例化对象分配了相同的静态值MBA。