首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

没法顺利将数据存入ArrayList数组中

2013-04-21 
无法顺利将数据存入ArrayList数组中package Work_6_Programingimport java.util.ArrayListimport java.u

无法顺利将数据存入ArrayList数组中

package Work_6_Programing;

import java.util.ArrayList;
import java.util.Scanner;

public class TestCandidate {
/**两个ArrayList数组用来存储数据*/
private static ArrayList<Candidate> list=new ArrayList<Candidate>();
private static ArrayList<Vote> list2=new ArrayList<Vote>();

public static void main(String[] args) {

System.out.println("欢迎来到投票系统!");
menu();
}
/** 主方法  */
public static void menu(){
System.out.println("1.用户添加    2.用户投票     3.用户查询        0.退出");
System.out.println("请选择");
Scanner c =  new Scanner(System.in);
int n = c.nextInt();
switch (n)
{
case 0:
System.exit(0);
case 1:
creatman();
menu();
case 2:
toVote();
menu();
case 3:
outdata();
menu();
default:
System.out.println("输入错误");
menu();
}

}
/** 创建候选人 */
public static void creatman(){
System.out.println("请输入候选人的名字: ");
Scanner c = new Scanner(System.in);
if(check(c.next())){
Vote v = new Vote();//创建一个新的Vote对象
Candidate li = new Candidate(c.next(), v);//创建一个新的Candidate对象
list.add(li);
list2.add(v);
menu();
}else{
System.out.println("投票人已存在");
menu();
}
}
/** 确认是否已存在 */
public static boolean check(String name){
if(list.size() == 0){
return true;
}
for(int i = 0; i < list.size(); i++){
Candidate li = new Candidate();
System.out.println("asd");
li = list.get(i);
if(li.getName().equals(name)){
return true;
}
}
return false;
}
/** 输出 */
public static void outdata(){
System.out.println("总参加人数有: " + list.size());
for(int i = 0; i < list.size(); i++){
Candidate li = new Candidate();
li = list.get(i);
Vote vo = new Vote();
vo = list2.get(i);
System.out.println(li.getName() + " 的票为   " + vo.getCount() );
}
menu();
}
/**投票开始*/
public static void toVote(){
for(int i = 0; i < list.size(); i++){
System.out.println("现在开始投票: ");
Candidate li = new Candidate();
li = list.get(i);
System.out.println("当前选手的名字是:  " + li.getName());
Vote vo = new Vote();
vo = list2.get(i);
System.out.println("请输入数字,1加一票,-1减一票,0为投票已结束");
while(true){
Scanner sin = new Scanner(System.in);
int in = sin.nextInt();
if(in == 1){
vo.increment();
}else if(in == -1){
vo.decrement();
}else if(in == 0){
break;
}
}
}
menu();
}

}

这个是主程序
下面两个是要用到的类
Vote类
package Work_6_Programing;
/**票数的统计*/
public class Vote {



private int count;

public int getCount() {
return count;
}

public void setCount(int count) {
this.count = count;
}

public void clear(){
count = 0;
}

public void increment(){
count++;
}
public void decrement(){
count--;
}
}


Candidate类

无法达到理想中的效果。当输入名字是,按第一次回车没有调到menu方法,在第二次后才行。求大神,求解没法顺利将数据存入ArrayList数组中

[解决办法]
主方法中的menu方法和创建候选人中的menu方法重复了  


可以把creatman()中的menu();删除
[解决办法]
第一:
if(check(c.next())){
            Vote v = new Vote();//创建一个新的Vote对象
            Candidate li = new Candidate(c.next(), v);
你到底要取哪个值?为什么调用两次c.next();
应该是String name = c.next();
if (check(name)) {
  new Candidate(name, v); // 省略一些,输入麻烦呀....
}

第二:new Candidate()这个对象时,看一下构造方法:
public Candidate(String name, Vote vote){
        numberOfCandifates++;  
}
并没有对name和vote赋值,你获取的数据从哪里呀?
难道云赋值了?
而你取值的时候,又云取值了?
没有调试代码,不好意思,你再验证一下是否正确。

热点排行