| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1935 人关注过本帖
标题:[求助]求个JAVA的简单问题,急
只看楼主 加入收藏
loner_yi
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-4-3
收藏
得分:0 

没有任何类型 Q1的外层实例可访问。必须用类型Q1的外层实例(例如,x.new A(),其中 x 是 Q1的实例)来限定分配。

可以这样写

public class Test {
static double d = 1.23;
Dec dec = new Dec();

public static void main(String[] args){

Test test = new Test();
System.out.println(test.dec.decrement(d));
}
class Dec{
public double decrement(double decMe){
return decMe = decMe - 0.1;
}
}


}


2007-07-15 00:36
ZoSo
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-6-30
收藏
得分:0 

public class Q1 {

public static void main(String[] args){
double d = 1.23;
Q1 q1=new Q1();
Dec dec = q1.new Dec();
dec.decrement(d);
System.out.println(d);
}
class Dec{
public void decrement(double decMe){
decMe = decMe - 0.1;
}
}
}

2007-07-15 08:14
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
以下是引用qiuruiok在2007-7-14 10:42:00的发言:

有两个问题。
一。类中不能创建类
二。关于直接调用的问题(不知道这样说对不对)就是:system.out.println(dec.decrement(d));只有这样才能正确的打印出你想要的结果。

类中当然可以创建类,方法里面都可以有内部类


可惜不是你,陪我到最后
2007-07-16 00:20
LLAITT1314
Rank: 1
等 级:新手上路
威 望:1
帖 子:44
专家分:0
注 册:2007-6-3
收藏
得分:0 

楼主,你在一个类里面又创建了一个类,当你在main方法中去访问内部类(class Dec)的时候,肯定是不能被访问的,因为class Dec是class Q1的一个成员,在你没有实例化class Q1的时候就去访问这个类中的非静态成员,所以jvm会报错.
有两种方法可以改错,第一:你把class Dec这个类写到class Q1的外面.第二:实例化class Dec的时候在main方法中要用这样的语句
[CODE]
public static void main(String[] args)
{
Q1 q = new Q1();
Dec dec = q.new Dec(); //下面就可以用dec对象了
....
}
[/CODE]
最后顺便在说说,Dec中的方法虽然不错,但是没有作用(自己想着改改吧)!

2007-07-17 09:53
威震天下
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-2-19
收藏
得分:0 
两种解决的方法
一使用Inner Class:[CODE]
public class Q1 {

Dec dec = new Dec();
class Dec {
public void decrement(double decMe) {
decMe = decMe - 0.1;
}
}

public static void main(String[] args) {
double d = 1.23;
Q1 q1 = new Q1();
q1.dec.decrement(d);
System.out.println(d);
}

}
[/CODE]

二使用:Static Nested Class
[CODE]
public class Q1 {

static class Dec {
public void decrement(double decMe) {
decMe = decMe - 0.1;
}
}

public static void main(String[] args) {
double d = 1.23;
Dec dec = new Dec();
dec.decrement(d);
System.out.println(d);
}

}

[/CODE]
Static Nested Class 和 Inner Class的不同:
static nested class是被声明的静态(static)的内部类。他可以不依赖于外部类实例化。
而通常的Inner Class需要在外部类实例化后才能实例化。
2007-07-17 15:25
zhen_1
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-6-26
收藏
得分:0 

public class Q1 {
public static void main(String[] args){
double d = 1.23;
Dec dec = new Dec();
dec.decrement(d);
System.out.println(d);
}
private class Dec{
public void decrement(double decMe){
decMe = decMe - 0.1;

}
}
}

2007-07-20 13:51
guoxhvip
Rank: 8Rank: 8
来 自:聖西羅南看臺
等 级:贵宾
威 望:44
帖 子:4052
专家分:135
注 册:2006-10-8
收藏
得分:0 
以下是引用qiuruiok在2007-7-14 10:42:00的发言:

有两个问题。
一。类中不能创建类
二。关于直接调用的问题(不知道这样说对不对)就是:system.out.println(dec.decrement(d));只有这样才能正确的打印出你想要的结果。

谁告诉你类中不能创建类?


愛生活 && 愛編程
2007-07-20 21:18
xiaoxuanfenz
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-4-5
收藏
得分:0 

class Dec{
public void decrement(double decMe){
decMe = decMe - 0.1;
return decMe;
}
}



public class Q1 {

public static void main(String[] args){
double d = 1.23;
Dec dec = new Dec();
dec.decrement(d);
System.out.println(dec.decrement(d));
}
}


dec.decrement(d)才是一个值,System.out.println(dec.decrement(d))才可以输出一个值,还缺个return decMe;(返回值)。

2007-07-22 15:36
快速回复:[求助]求个JAVA的简单问题,急
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033786 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved