java for循环无法执行

问题描述

java for循环无法执行
public static void main(String[] args) {
// TODO Auto-generated method stub
Population population = new Population(3 10 30);
population.initPopulation();
String[]gene;
Individual [] pop;
try {
Class.forName(""com.microsoft.sqlserver.jdbc.SQLServerDriver"");
String connectionUrl =""jdbc:sqlserver://localhost:1433;databaseName=commentData"";
Connection connection = DriverManager.getConnection(connectionUrlsa""zangai"");
String sql=""select comment from commentData "";
PreparedStatement preparedStatement=connection.prepareStatement(sql);

        ResultSet resultSet = preparedStatement.executeQuery();        pop=new Individual[10];        for(int i=0;i<population.getGroupCount();i++)        {                gene=new String[30];                for (int j = 0; j < population.getGeneLength(); j++) {                        resultSet.next();                        gene[j] = resultSet.getString(""comment"");                }                for(String a:gene)                    System.out.println(a);                pop[i].setGene(gene);        }        population.setPopulation(pop);    }    }

public class Individual {
private String []gene ;//
private double fitness = 0;// 适应度
private double selectedProbability=0.0;//选择概率
private double cumulativeProbability=0.0;//变异概率
private int selectedCount=0;// 选择计数
private StringBuilder stringBuilder;//随机分配

public void initGene(int geneLengthint k){    stringBuilder=new StringBuilder();    gene=new String[geneLength];    for (int i = 0; i< geneLength; i++) {        Random random = new Random();        stringBuilder.append(Math.abs(random.nextInt() % k) + 1);    }    }        }

public class Population {
private Individual[] population;
private int groupCount = 0;//种群
private int k = 0;//上下文重组数目
private int geneLength = 0;//编码长度

// public Population(int k int groupCount int geneLength) {    this.groupCount = groupCount;    this.k = k;    this.geneLength = geneLength;     population = new Individual[groupCount];        for(int i=0;i<groupCount;i++)         population[i]=new Individual();}

上面是三个主要类和其中属性的定义,但是在main中循环pop[i]处无法执行,请问这个怎么解决啊

解决方案

 pop=new Individual[10];        for(int i=0;i<population.getGroupCount();i++)        {                gene=new String[30];                for (int j = 0; j < population.getGeneLength(); j++) {                        resultSet.next();                        gene[j] = resultSet.getString(""comment"");                }                for(String a:gene)                    System.out.println(a);                                pop[i]       = new Individual();//需要new实例否则为null的,下面一句就报错了。                pop[i].setGene(gene);        }

解决方案二:
pop=new Individual[10];改成pop=new Individual{nullnull ... null};
完成初始化

解决方案三:

new Individual[10]

这个只是声明了变量,初始都是null的,你调用他的方法当然会报错。
在使用的时候使用pop[i] = new Individual();实例化就可以使用了。

解决方案四:
可是new了之后不就是相当于赋了10个null值吗

解决方案五:

danielinbiti  回答是正确的

pop=new Individual[10]; 你只是创建了一个数组,并没有初始化元素,数组的每个元素都是null;
pop[i] 是null 你在调用 pop[i].setGene 会报 空指针异常的。

时间: 2024-11-01 10:02:54

java for循环无法执行的相关文章

Java中for循环中执行顺序问题及break, continue用法

问题|循环|执行 最近在机子上装了jdk1.4.2,装了编辑器Eclipse3.0.1,用后感觉Eclipse确实很好用,特别是参数提示功能.网上的java资源也还不少,看了<thinking in java>中文版前几章,记点问题与发现在这里:1. for循环的一个问题for(int i=1, j=i+10 ; i<5; i++ , j=i*2)System.out.println("i="+i+" j="+j); 运行结果:i=1 j=11i=

Java中for循环的执行过程分析_java

本文实例分析了Java中for循环的执行过程.分享给大家供大家参考.具体分析如下: public class Test01{ public static void main(String[] args) { int i = 0 ; for(foo('A');foo('B')&&i<3;foo('C')){ i++ ; foo('D') ; } } public static boolean foo(char c){ System.out.print(c + " "

java的循环语句

while,do-while和for控制着循环,有时将其划分为"反复语句".除非用于控制反复的布尔表达式得到"假"的结果,否则语句会重复执行下去.while循环的格式如下: while(布尔表达式) 语句 在循环刚开始时,会计算一次"布尔表达式"的值.而对于后来每一次额外的循环,都会在开始前重新计算一次. 下面这个简单的例子可产生随机数,直到符合特定的条件为止:   //: WhileTest.java // Demonstrates the w

java for循环体循环一定次数终止程序重新开始循环(不是break,就是点那个正方形的那种终止)

问题描述 java for循环体循环一定次数终止程序重新开始循环(不是break,就是点那个正方形的那种终止) for(;;){ System.out.println("跳出来"); //终止循环体,在保留aid最后一次值的基础上,程序从这个位置重新开始运行. for(aid=91322;aid<=2000000;aid++){ q=bili.inputav(aid,page); j1++; System.out.println(aid+"连续扫描"+j1+&

mysql 里executeQuery在for循环里执行失效怎么解决?

问题描述 mysql 里executeQuery在for循环里执行失效怎么解决? 问题就是,之前是有时候可以上传图片,并被数据库记录,但会经常图片上传成功,数据库记录却没有. 在javabean的数据库里是这样创建conn 和 st 及rs的: public ft_con(){ if(conn==null){ try{ //Class.forName("com.microsoft.sqlserver.jdbc"); 基本不使用. //Class.forName("com.mi

java中循环遍历数组操作时跳出循环问题

问题描述 java中循环遍历数组操作时跳出循环问题 在遍历数组时,对数组中的值进行比较的时候,如果不是数组内的元素要跳出循环 解决方案 可以啊,直接用break就可以跳出循环了. for (int x : arr1) { bool b = false; for (int y: arr2) { if (x == y) { b = true; break; } } if (!b) y不属于arr1 } 解决方案二: 难理解遍历数组怎么会出现不是数组的元素,实现跳出循环使用break就行了 解决方案三

java关于Timer schedule执行定时任务

  公司技术人员在实现内部办公系统与外部网站一体化的时候,最重要的步骤就是从OA系统读取数据,并且根据网站模板生成最终的静态页面.这里就需要一个定时任务,循环的执行. 技术人员在写定时任务的时候,想当然的以为Timer.schedule(TimerTask task, long delay)就是重复的执行task.程序运行后发现只运行了一次,总觉得是task里的代码有问题,花了很长时间调试代码都没有结果. 仔细研读java api,发现: schedule(TimerTask task, lon

关于Java中停止线程执行的方法总结

Java中停止线程执行的方法 一.暂停或停止线程的理论 在Java编程中,要暂停或停止当前正在运行的线程,有几种方法.对于把线程转入睡眠Sleep状态,使用Thread.sleep()是最正确的方式.或许有人会问,为什么不使用等待wait()或通知notify()?要知道,使用等待或通知都不是很好的方式.线程可以使用等待wait()实现被阻塞,这属于条件等待的方式,当条件满足后,又会从阻塞转为等待状态.尽管可以在等待wait()条件那里放一个超时设置,但等待wait()的设计目的不是这样的,等待

Java中一个线程执行死循环有什么后果_java

假设有两个线程在并发运行,一个线程执行的代码中含有一个死循环如:while(true)....当该线程在执行while(true)中代码时,另一个线程会有机会执行吗? 示例代码(代码来源于互联网) public class Service { Object object1 = new Object(); public void methodA() { synchronized (object1) { System.out.println("methodA begin"); boolea