java中类的问题。。

来源:百度知道 编辑:UC知道 时间:2024/06/19 14:23:40
class Vote {

int v=0;

Vote(){};
void Count(){};
int getCount(){return v;}
void setCount(int q){v=q;}
void clear(){v=0;}
void increment(){v=v+1;}
void decrement(){v=v-1;}

}

class Candidate {

String na;
Vote vo= new Vote();
static int num;
Candidate(){};
Candidate(String n,Vote vb){na=n;vo.v=vb.v;}
String getName(){return na;}
Vote getVote(){return vo;}
static int getNumberOfCandidates(){return num;}

}

import javax.swing.JOptionPane;
public class Test {
public static void main(String[] args){

int q,l;
Candidate[]a=new Candidate[2];

String d=JOptionPane.showInputDialog(null,"输入数字","T11",JOptionPane.QUESTION_MESSAGE);
q=Integer.parseInt(d);

l=0;
while(l==0){

switch(q)
{
case 1:a[0].vo.incremen

其实你一个对象也没有创建,抛出的应该是空指针异常吧?

因为Candidate[]a=new Candidate[2]; 并没有创建对象,只是创建了能容纳两个对象的数组。还要继续写:
a[0] = new Candidate();
a[1] = new Candidate();

还有就是输入语句和转化语句应该在循环内。

你输入的是非数字!

q = Integer.parseInt(d);会产生异常,当然如果你输入的确实是数字就不会有问题。

其次,while(l==0){ }循环导致程序始终在运行,估计异常也是内存耗尽吧。

while(l==0){

switch(q)
{
case 1:a[0].vo.increment();break;
case 2: a[1].vo.increment();break;
case -1:a[0].vo.decrement();break;
case -2:a[1].vo.decrement();break;
case 0: l=1;break;
}
}
这段代码会出现死循环