Java静态方法:无法从静态上下文中引入非静态方法
来源:互联网 发布:jersey框架 get json 编辑:程序博客网 时间:2024/06/08 07:41
import java.util.Scanner;public class xuefenjidian{ double kcxfjd(double cj,int xuefen) { double kcjd; double kcxfjd; if(cj>=60) kcjd = (cj - 50)/10; else kcjd = 0; kcxfjd = kcjd * xuefen; return kcxfjd; } public static void main(String[]args) { double cj,pscj,zcj,maxcj,mincj,hglv; int num; Scanner sc = new Scanner(System.in); double jd,totaljd; int xuefen = 0; num=0; zcj=0; maxcj=0; mincj=0; totaljd = 0; for(int i=0;i<10;i++) { System.out.println("请输入成绩:" +(i+1)); cj = sc.nextDouble(); System.out.println("请输入学分:" +(i+1)); cj = sc.nextInt(); if( cj >=60 ) num ++; zcj =zcj + cj; if( cj > maxcj) maxcj=cj; else if(cj < mincj) mincj = cj; jd =kcxfjd(cj , xuefen); totaljd +=jd; System.out.println("课程学分绩点:"+jd); } pscj = zcj / 10; hglv = (double)num / 10; System.out.println("总成绩" +zcj + "平均成绩"+pscj +"最高成绩"+maxcj +"最低成绩"+mincj); System.out.println("合格门数"+num +"合格率"+hglv); System.out.println("总绩点"+totaljd); }}
开始运行时,显示无法在“无法从静态上下文中引入非静态方法”,一脸无语,最后查询了一下,一位大佬这样说:
在静态的方法中不能直接调用非静态的方法或属性。因为一个类的静态方法在这个Class文件被加载之后,就可以由这个Class类型对象来调用,而非静态的方法需要一个实例对象,有可能还未被创建,所以为了避免在静态方法中调用一个还不存在的实例对象的非静态方法,编译期就会直接阻止这个行为。
处理方法如下:
public static double kcxfjd(double cj,int xuefen) { double kcjd; double kcxfjd; if(cj>=60) kcjd = (cj - 50)/10; else kcjd = 0; kcxfjd = kcjd * xuefen; return kcxfjd;
这里引用大佬的一段代码:
public class Fibonacci { public static void main(String []args) { int x = f(6); System.out.println(x); } public int f(int x) { if(x==1||x==2) return 1; else return f(x-1)+f(x-2); } }
解决的方法有两种,第一种是将被调用的方法设置成静态方法;第二种是new本类,然后通过实例来调用
第一种解决方法:
public class Fibonacci { public static void main(String []args) { int x = f(6); System.out.println(x); } public static int f(int x) { if(x==1||x==2) return 1; else return f(x-1)+f(x-2); } }
第二种解决方法:
public class Fibonacci { public static void main(String []args) { int x = f(6); System.out.println(x); } public static int f(int x) { if(x==1||x==2) return 1; else return f(x-1)+f(x-2); } }
0 0
- Java静态方法:无法从静态上下文中引入非静态方法
- 无法从静态上下文中引用非静态方法
- 无法从静态上下文中引用非静态方法
- 静态方法:无法在静态上下文中引用非静态
- 静态方法:无法在静态上下文中引用非静态
- 无法从静态上下文中引用非静态变量,非静态方法
- 由“无法从静态上下文中引用非静态方法”引出的疑问
- “无法从静态上下文中引用非静态方法”这个问题怎么解决
- “无法从静态上下文中引用非静态”
- 无法从静态上下文中引用非静态变量
- 无法从静态上下文中引用非静态 变量 this
- 无法从静态上下文中引用非静态 变量 this
- JAVA学习【2】错误:无法从静态上下文中引用非静态
- java编译时出现无法从静态上下文中引用非静态
- JAVA学习【2】错误:无法从静态上下文中引用非静态(转载)
- 错误: 无法从静态上下文中引用非静态 变量 this
- 初学java:“错误:无法从静态上下文中引用非静态”(在调用类中的类时出现的错误)
- java静态方法访问非静态方法
- SpringMVC中使用Interceptor拦截器的使用
- Android使用intent调取导航或者地图
- 杭电ACM第1002题——A + B Problem II
- DiscreteScrollView
- 排序算法之希尔排序
- Java静态方法:无法从静态上下文中引入非静态方法
- day02兼容性封装包
- Swift3.0 Optional String 类型 强制拆包
- ACM习题Z-26
- 初步总结C++命名规范
- 我应该找引擎开发的岗位
- Android(4.2) Sensors 学习——G-sensor,Gyroscope驱动移植
- 01背包+记录路径
- 接口和类之间的关系