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