今天去面试,做了一份试卷,第一题就不会
1 定义一个变量i 使得循环
   while(i==i){
   }结束。
2 输出1到1000的所有整数,要求不用循环和if语句,至少要写出两种方法。

解决方案 »

  1.   

    第二题:http://topic.csdn.net/u/20071101/11/e10e80e2-e722-4822-a4bd-169d1de4b42b.html
        
      

  2.   


    public class PrintNum {   public int print(int n){
       int a = n>1?print(n-1)+1:1;
       System.out.println(a);
       return a;
       }
       public static void main(String[] args){   PrintNum p = new PrintNum();
      p.print(1000);
       }
    }自己写的啊~
      

  3.   

    第一题public class Test { public static void main(String[] args) {
       
    double d = 1.0%0;
    while(d == d){

    }
    System.out.println("over");
    }
    }
      

  4.   

    第一题是什么意思啊?不懂!
    第二题我有种方法用递归int i=1;public void printNum(){
       System.out.println(i);
       i++;
       if(i == 1000){
          return;
       }
       printNum();
    }
      

  5.   

    关于第一题
    可以让i!=i吗? 
    当你看到这个命题的时候一定会以为我疯了,或者Java语言疯了。这看起来是绝对不可能的,一个数怎么可能不等于它自己呢?或许就真的是Java语言疯了,不信看下面的代码输出什么? 
      double i=0.0/0.0; 
      if(i==i){ 
          System.out.println("Yes i==i"); 
      }else{ 
          System.out.println("No i!=i"); 
      } 上面的代码输出"No i!=i",为什么会这样呢?关键在0.0/0.0这个值,在IEEE 754浮点算术规则里保留了一个特殊的值用来表示一个不是数字的数量。这个值就是NaN("Not a Number"的缩写),对于所有没有良好定义的浮点计算都将得到这个值,比如:0.0/0.0;其实我们还可以直接使用Double.NaN来得到这个值。在IEEE 754规范里面规定NaN不等于任何值,包括它自己。所以就有了i!=i的代码。 
      

  6.   

    第二题:
    public class TestLoop {
    static int top = 1000;
    static int bot = 1;

    public static void main(String[] args) {
    myprint(0, top);
    }
    static int myprint(int x, int y) {
    System.out.println(bot);
    bot = (bot == top)? bot : myprint(++bot, top);
    return bot;
    }
    }
      

  7.   

    不错的题目public class A {
    public static int print(int i){
    System.out.println(i);
    int j = (++i>1000)? 0 : print(i);
    return j;
    }
    public static void main(String[] args){
    int a =1;
    print(a);
    }
    }
      

  8.   

    不错的题目public class A {
    public static int print(int i){
    System.out.println(i);
    int j = (++i>1000)? 0 : print(i);
    return j;
    }
    public static void main(String[] args){
    int a =1;
    print(a);
    }
    }
      

  9.   

    第一题是不是让程序出个异常,就算可以了?比如int i=3/0.这样就不会进while循环体了~~我试过用null来,不过==判断还是通过了。int i=3/0,是可以的。当然,如果可以改while循环体,那就更好办了.
      

  10.   

    第二题,楼上的回答都用到了递归或者分支。。
    一楼提供的链接里有个回答可以借鉴,就是用两个函数来回调(那个是C语言里的实现),Java中,你可以用多线程来回沉默和唤醒,达到同样的目的。
      

  11.   


    int i =1;
    public void run(){
    System.out.println(i);
    switch(i++){
    case 1000: System.exit(0);
    }
    run();
    }
      

  12.   


    public class Count {
    int f(int i)
    {
    try{
    int a[]=new int[1000];
    a[i]=i+1;
    System.out.println(a[i]);
    return f(i-1);
    }
    catch(Exception e)
    {return 0;}

    }
    public static void main(String[] args)
    { Count count=new Count();
    count.f(999);

    }
    }
      

  13.   

    第一题循环体里用个break语句
      

  14.   

    int i =1;
        public void run(){
                System.out.println(i);
                switch(i++){
                case 1000: System.exit(0);
                }
                run();
            }
    这个够绝!
      

  15.   

    不让用if 用do while  while do 不一样
      

  16.   

    #include <stdio.h>
    #define A(x) x;x;x;x;x;x;x;x;x;x;
    int main (void){
      int n = 1;
      A(A(A(printf ("%d ", n++))));
      return 0;
    }