老师留的JAVA体育彩票作业!有个问题求高人指点!import java.util.*;
public class Person {
int zu[]=new int[7];
Scanner input=new Scanner(System.in);
public void hao(){
System.out.println("请输入7个号码:");
for(int i=0;i<zu.length;i++){
zu[i]=input.nextInt(); //接收输入的号码
for(int j=0;j<i;j++){
if(zu[i]==zu[j]){
System.out.println("输入错误,请输入一个不重复的数!");
System.out.println("请重新输入此数:");
i--;
break;
}else if(zu[i]>10||zu[i]<=0){
System.out.println("输入错误,请输入一个大于10切小于0的整数!");
System.out.println("请重新输入此数:");
i--;
break;
}
}
}
}
}
public class YaoJiang {
int zu[]=new int[7];
int ci=0; //中奖号码数
public int chou(){
int sui=(int)(Math.random()*10)+1; //产生一个随机数
return sui;
}
public void kaiShi(){
for(int i=0;i<zu.length;i++){
zu[i]=chou();
//循环判断到此数之前的数有没有相等的
for(int j=0;j<i;j++){
if(zu[i]==zu[j]){
i--; //有相等的则重新抽取
break;
}
}
}
jieGuo();
}
//出问题部分,每次pp.zu[j]都等于0,而用main方法里调用就可以
public void jieGuo(){
Person pp=new Person();
for(int i=0;i<zu.length;i++){
for(int j=0;j<pp.zu.length;j++){
if(zu[i]==pp.zu[j]){
ci++;
break;
}
}
}
show();

}
//显示结果
public void show(){
System.out.println("本期体育彩票中奖号码为:");
for(int i=0;i<zu.length;i++){
System.out.print(zu[i]+"\t");
}
System.out.println();
System.out.println("您猜中了"+ci+"个数");
if(ci==5){
System.out.print("恭喜您猜对5个数!奖励一万元人民币!");
}else if(ci==6){
System.out.print("恭喜您猜对5个数!奖励一千万元人民币!");
}else if(ci==7){
System.out.print("恭喜您猜对5个数!奖励一亿元人民币!");
}else{
System.out.print("很遗憾您什么也没得到!");
}
}
}
public class Tese {
public static void main(String[]args){
Person pp=new Person();
YaoJiang yy=new YaoJiang();
pp.hao();
yy.kaiShi();
}
}

解决方案 »

  1.   

    你都没调用pp.hao()所以自然不会生成数组啦~~还有就是特乱。逻辑结构!Person中 还有就是判断zu[i] != zu[j]并不代表就不属于 [1-10]的范围,所以不能放在同一if判断结构中,应该分开
      

  2.   


    package com.ricky.www;import java.util.Random;
    import java.util.HashSet;
    import java.util.Scanner;public class Test {
    public static void main(String[] args) {
    HashSet<Integer> num1 = luckyNum();
    HashSet<Integer> num2 = currectNum();
    int currect = compare(num1, num2);
    System.out.println("恭喜你中了 " + currect + " 个号码.");
    } public static HashSet<Integer> currectNum() {
    Random random = new Random();
    HashSet<Integer> set = new HashSet<Integer>();
    for (int i = 0; i < 7;) {
    int num = random.nextInt(9) + 1;
    if (set.add(num)) {
    i++;
    }
    }
    return set;
    } public static HashSet<Integer> luckyNum() {
    HashSet<Integer> set = new HashSet<Integer>();
    Scanner keyboard = new Scanner(System.in);
    int num;
    System.out.println("Insert your 7 lucky numbers: ");
    for (int i = 1; i <= 7; ) {
    System.out.print(i + ": ");
    try{
    num = Integer.parseInt(keyboard.nextLine());
    }catch(Exception e){
    System.err.println("你的输入有误,请重新输入");
    continue;
    }

    if(set.add(num)){
    i ++;
    }else{
    System.out.println("存在重复的号码,请重新输入.");
    }

    }
    return set;
    } public static int compare(HashSet<Integer> nums1, HashSet<Integer> nums2) {
    System.out.println("你输入的号码如下:");
    for(Integer num : nums1){
    System.out.print(num + " " );
    }
    System.out.println("\n系统号码如下:");
    for(Integer num : nums2){
    System.out.print(num + " ");
    }

    System.out.println("\n你中了如下号码:");
    int result = 0;
    for(Integer num : nums1){
    if(nums2.contains(num)){
    System.out.print(num + " ");
    result ++;
    }
    }
    return result;
    }
    }