/*一个35选7的彩票模拟程序,输入一个数,用来确定要几组彩票,每组彩票内不能有相同的号码,运行时出现如下错误:
Test1.java:15: 非法字符: \12288
       if(a[k]==a[i])break;*/
import javax.swing.JOptionPane;
public class Test1

  public static void main(String [] args)
   { 
    String str=JOptionPane.showInputDialog("请输入您要买的注数:");
     int n=Integer.parseInt(str);
     int[] a=new int[7];
     for(int j=0;j<n;j++)
      {  
for(int i=0;i<7;)
           {
       a[i]=(int)(35*(Math.random())+1);
     for(int k=0;k<i;k++)
       if(a[k]==a[i])break;
             System.out.print(a[i]+" ");
             i++;
            } 
        System.out.println(" ");
      }
    }
}

解决方案 »

  1.   

    可能是语句if(a[k]==a[i])break; 前输入了非法字符。
    请教:Math.random()方法是用来输出0到1的随机数吗?
      

  2.   

    对啊,是随机数,0<=num<1
    问题你也说对了,是if(a[k]==a[i])break; 前的空格有问题。
    这程序能运行,但是输出的7个数还是有相等的可能,想问这个问题怎么解决。
    谢谢。
      

  3.   

    测试环境:eclipse3.2.1
    错误原因:15行处if前面有前导非法空字符.
    删除if前面的所有字符.运行通过.
      

  4.   

    public class Test1{  
      public static void main(String [] args){  
        String str=JOptionPane.showInputDialog("Please input"); 
        
         int n=Integer.parseInt(str); 
         int[] a=new int[7]; 
         for(int j=0;j <n;j++){   
          for(int i=0;i <7;){ 
          boolean sign=true;
          a[i]=(int)(35*(Math.random())+1); 
          for(int k=0;k<i;k++) 
          if(a[k]==a[i]){
          sign=false;
          break; 
          }
          if(sign){
                 System.out.print(a[i]+" "); 
                 i++; 
          }
             }  
            System.out.println(" "); 
         } 
        } 
    }
      

  5.   


    import javax.swing.JOptionPane; 
    public class Test1 
    {  
      public static void main(String [] args) 
       {  
        String str=JOptionPane.showInputDialog("Please input a number:"); 
         int n=Integer.parseInt(str); 
         int[] a=new int[7]; 
         for(int j=0;j <n;j++){ 
          for(int i=0;i <7;i++){
          a[i]=(int)(35*(Math.random())+1);
          boolean bo=false;
          for(int k=0;k <i;k++)
          if(a[k]==a[i]){
          bo=true;
          break;
          }
          if(bo){
          i--;
          continue;
          }
          System.out.print(a[i]+" ");
          }  
            System.out.println(" "); 
          } 
        }
    }
      

  6.   

    搞头疼了,不会解释了,楼主自己看下啊....import javax.swing.JOptionPane; 
    public class Test 
    {  
      public static void main(String [] args) 
       {  
        String str=JOptionPane.showInputDialog("请输入您要买的注数:"); 
         int n=Integer.parseInt(str); 
         int a[]=new int[7];
         for(int k=1;k<=n;k++){
         for(int i=0;i<7;i++)
         {
          a[i]=(int)(Math.random()*35+1);
          for(int j=0;j<i;j++)
          while(a[j]==a[i])
          {
          a[i]=(int)(Math.random()*35+1);
          }
         System.out.print(a[i]+"\t");
         }
         System.out.println();
         }
        } 
    }
      

  7.   

    哥们儿,仁至义尽了,给我发分吧.我对分很眼红哦.import javax.swing.JOptionPane; 
    public class Test 
    {  
      public static void main(String [] args) 
       {  
        String str=JOptionPane.showInputDialog("请输入您要买的注数:"); 
         int n=Integer.parseInt(str); 
         int a[]=new int[7];
         for(int k=1;k<=n;k++){
         for(int i=0;i<7;i++)
         {
             a[i]=(int)(Math.random()*35+1);
                 for(int j=0;j<i;j++)//每次有一个i的时候,总让a[i]和他前面已经赋值了的a[j]不相等.
                     while(a[j]==a[i])//我们不知道要循环多少次才可以让a[j]!=a[i]只好用while让它做到a[j]!=a[i]为止.
                     {
                     a[i]=(int)(Math.random()*35+1);
                     }
         System.out.print(a[i]+"\t");
         }
         System.out.println();
         }
        } 
    }
      

  8.   

    非常感谢三位朋友为我提供了程序,
    13楼的朋友思路跟我最近,不过感觉是没必要再多一个boolean变量的
    14楼的朋友有一个i++,还有一个i--,搞得好复杂啊
    15楼的朋友有四个循环,循环一多就麻烦啊。
    我自己又想了一个办法,自认为可读与执行都还行,不知道你们能不能同意。
    不好意思,发这个帖时没有散分,想再追加分,可我没有那么多了。import javax.swing.JOptionPane;
    public class Exam10_1
    {
     public static void main(String [] args)
     {
      String str=JOptionPane.showInputDialog("请输入要投的注数:");
      int n=Integer.parseInt(str);
      int [] a=new int[7];
      int k;
        for(int j=0;j<n;j++)
       {
        for(int i=0;i<7; )
        {
              a[i]=(int)(35*Math.random()+1);
              for(k=0;k<i;k++)
              if(a[k]==a[i])break;
              if(i==k)
              i++;
             }
        
            for(int i=0;i<7;i++)
            System.out.print(a[i]+" ");
            System.out.println(" ");
        }
      }
    }