编写一个从N个数据中随机抽取K个数值并升序排列的代码,编译出错,求各位帮忙解答一下,谢谢

林飞波 发布于 2015/11/05 16:40
阅读 93
收藏 0
import java.util.*;
import java.math.*;
class TT
{
int n;
int k;
public static void main(String[] args)
{
TT q=new TT();
q.aaa();
int[] number=new int[q.n];
for(int i=0;i<number.length;i++)
number[i]=i+1;
int[] result=new int[q.k];
for(int i=0;i<q.k;i++)
{
int s=(int) (Math.random()*q.n);
result[i]=number[s];


}


Arrays.sort(result);
System.out.print(Arrays.toString(result));
}


void aaa()
{
Scanner in=new Scanner(System.in);
System.out.print("一共有多少数字");
q.n=in.nextInt();
System.out.print("从中抽出几个数字");
q.k=in.nextInt();

}

}

以上是程序代码,编译提示:找不到方法aaa中的变量q.n和q.k。想问下为什么,变量我是在类中定义的,在主函数的开头也已经创建了对象,求帮忙解答,谢谢!

加载中
0
東條・スペンサー・咲
東條・スペンサー・咲

你的变量是在主函数中创建的局部变量而不是类的成员变量。当然aaa中是不能访问的。

你需要的是this。


東條・スペンサー・咲
東條・スペンサー・咲
回复 @林飞波 : 除了这个的话,可以把aaa设置为返回类型TT的函数。在aaa内构造TT,并且设置其q和k的数值。然后将其返回。
林飞波
@东条咲 哦哦,我懂了,我一开始没注意到q这个对象引用的作用域,那这个函数出了把成员变量n和k变成静态的,还有this这个方法,怎么用啊。谢谢你
東條・スペンサー・咲
東條・スペンサー・咲
回复 @林飞波 : 因为找不到q,所以自然找不到n和k。
東條・スペンサー・咲
東條・スペンサー・咲
回复 @林飞波 : 你的q是在主函数定义的,作用域只有主函数,在类的成员函数里怎么可能访问得到呢?
下一页
返回顶部
顶部