package learn;//这是我写的书上习题一个小程序,我现在想在类里定义面积s和周长v为成员变量,然后由主函数
//main来调用他们然后输出。但是发觉,这个访问权限怎么设置都不行。只能写了这么一大长串的表达式。
import java.lang.*;
public class sanJiao { /**计算三角形的周长面积
* @param args
*/
private static int width;
private static int high;
public void setwidth(int width){
sanJiao.width=width;
}
public void sethigh(int high){
sanJiao.high=high;
}
public int gethigh(int high){
return high;
}
public int getwidth(int width){
return width;
} public int mianji(int width,int high){//方法前面加不加static好像都不影响程序
return width*high;
}
public int zhouchang(int width,int high){
return 2*(width+high);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
sanJiao sanjiao=new sanJiao();
System.out.println("width is : "+args[0]);
System.out.println("high is : "+args[1]);
sanjiao.width=Integer.parseInt(args[0]);
sanjiao.high=Integer.parseInt(args[1]);
System.out.println("面积是 : "+sanjiao.mianji(width,high));
System.out.println("周长是 : "+sanjiao.zhouchang(width,high));
}}
//main来调用他们然后输出。但是发觉,这个访问权限怎么设置都不行。只能写了这么一大长串的表达式。
import java.lang.*;
public class sanJiao { /**计算三角形的周长面积
* @param args
*/
private static int width;
private static int high;
public void setwidth(int width){
sanJiao.width=width;
}
public void sethigh(int high){
sanJiao.high=high;
}
public int gethigh(int high){
return high;
}
public int getwidth(int width){
return width;
} public int mianji(int width,int high){//方法前面加不加static好像都不影响程序
return width*high;
}
public int zhouchang(int width,int high){
return 2*(width+high);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
sanJiao sanjiao=new sanJiao();
System.out.println("width is : "+args[0]);
System.out.println("high is : "+args[1]);
sanjiao.width=Integer.parseInt(args[0]);
sanjiao.high=Integer.parseInt(args[1]);
System.out.println("面积是 : "+sanjiao.mianji(width,high));
System.out.println("周长是 : "+sanjiao.zhouchang(width,high));
}}
解决方案 »
- 学JAVA是看书好还是看视频好呢?
- java桌面程序怎么调用打印机打印小票啊
- MyEclipse连接mysql出错:Communications link failure
- 给位大侠 给偶解释一下这个程序
- jbuilder安装后任何一个程序都报classpath出错是怎么回事?急!
- 如何设置画线的粗细?
- 我知道是个小问题,可是我就是看不出来,
- 一个关于文件传输的简单问题!送分了!
- java实现电路布线问题(分支限界法)
- 程序运行到一半报错,An unexpected error has been detected by Java Runtime Environment:
- JAVA的小问题
- 关于文件读取输入留的3个问题
这里的static干吗?
你直接定义一个private int mianji;
public static int getMianji(){
return width*high;
}
加一个static来修饰一下就可以在这个方法里调用了
public class sanJiao { /**计算三角形的周长面积
* @param args
*/
private static int width;
private static int high;
private int s;
public void setwidth(int width){
sanJiao.width=width;
}
public void sethigh(int high){
sanJiao.high=high;
}
public int gethigh(int high){
return high;
}
public int getwidth(int width){
return width;
} public static int mianji(int width,int high){
int s=width*high;
return s;
}
public int zhouchang(int width,int high){
return 2*(width+high);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
sanJiao sanjiao=new sanJiao();
System.out.println("width is : "+args[0]);
System.out.println("high is : "+args[1]);
sanJiao.width=Integer.parseInt(args[0]);
sanJiao.high=Integer.parseInt(args[1]);
System.out.println("面积是 : "+sanjiao.s);
System.out.println("周长是 : "+sanjiao.zhouchang(width,high));
}}
写成这样,但是面积打出来的是0 没有调用mianji方法
* @param args
*/
private static int width;
private static int high;
private int s;
private int v;
public void setwidth(int width){
sanJiao.width=width;
}
public void sethigh(int high){
sanJiao.high=high;
}
public int gethigh(int high){
return high;
}
public int getwidth(int width){
return width;
} public int getS(int width,int high){//方法前面加不加static好像都不影响程序
s=width*high;
return s;
}
public int getV(int width,int high){
v=2*(width+high);
return v;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
sanJiao sanjiao=new sanJiao();
System.out.println("width is : "+args[0]);
System.out.println("high is : "+args[1]);
sanjiao.width=Integer.parseInt(args[0]);
sanjiao.high=Integer.parseInt(args[1]);
System.out.println("面积是 : "+sanjiao.getS(sanjiao.width,sanjiao.high));
System.out.println("周长是 : "+sanjiao.getV(sanjiao.width,sanjiao.high));
}}
F:\java\sanJiao.java:42: 无法从静态上下文中引用非静态 变量 s
System.out.println("面积是 : "+s);
^
F:\java\sanJiao.java:43: 无法从静态上下文中引用非静态 变量 v
System.out.println("周长是 : "+v);
^
2 错误输出完成 (耗时 4 秒) - 正常终止楼上调试出错。我的意思就是大家能不能改成,用s v直接在main中调用。
在你的类中静态变量设成私有的.那么你做法的目的是什么呢.如果只是供类内部调用.为何不去掉静态修饰符?
如果是想在外部类中调用sanJian类中的变量,那么就不应用私有修饰符!
//main来调用他们然后输出。但是发觉,这个访问权限怎么设置都不行。只能写了这么一大长串的表达式。
import java.lang.*;
import java.util.Scanner;public class sanJiao { /**
* 计算三角形的周长面积
*
* @param args
*/ private static int width;
private static int high; public void setwidth(int width) {
this.width = width;
} public void sethigh(int high) {
this.high = high;
} public int gethigh(int high) { return high;
} public int getwidth(int width) { return width;
} public int mianji(int width, int high) {// 方法前面加不加static好像都不影响程序
return width * high;
} public int zhouchang(int width, int high) {
return 2 * (width + high);
} public static void main(String[] args) {
// TODO Auto-generated method stub
sanJiao sanjiao = new sanJiao();
Scanner scan = new Scanner(System.in); System.out.println("Input width:");
int a = scan.nextInt();
sanjiao.setwidth(a);
System.out.println("Input high:");
int b = scan.nextInt();
sanjiao.sethigh(b); System.out.println("width is : "+sanjiao.getwidth(width));
System.out.println("high is : "+sanjiao.gethigh(high));
System.out.println("面积是 : " + sanjiao.mianji(width, high));
System.out.println("周长是 : " + sanjiao.zhouchang(width, high)); }}不知道这样改符合你的意思?
在main中这样调用
* @param args
*/
private static int width;
private static int high;
private static int s;
private static int v;
/*public void setwidth(int width){
sanJiao.width=width;
}
public void sethigh(int high){
sanJiao.high=high;
}
public int gethigh(int high){
return high;
}
public int getwidth(int width){
return width;
}*/ public int getS(int width,int high){//方法前面加不加static好像都不影响程序
s=width*high;
return s;
}
public int getV(int width,int high){
v=2*(width+high);
return v;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
sanJiao sanjiao=new sanJiao();
System.out.println("width is : "+args[0]);
System.out.println("high is : "+args[1]);
sanJiao.width=Integer.parseInt(args[0]);
sanJiao.high=Integer.parseInt(args[1]);
s=sanjiao.getS(sanjiao.width,sanjiao.high);
v=sanjiao.getV(sanjiao.width,sanjiao.high);
System.out.println("面积是 : "+s);
System.out.println("周长是 : "+v);
}}