Hi

Why do you need that?

Try, for e.g.:

   /**
    *
    * @author mihai
    */
   public class PrintTwistedSequence {
       public static void main(String[] args) {
           for ( int i = 1 ; i < 7 ; i++ ){
               boolean odd = (i%2 == 1);
               int start = 20;
               if ( odd ) start -= 2 * i - 1;
               for ( int j = 0 ; j < start ; j++ )
                   System.out.print( ' ' ); // Print a space
               // For odd numbers, like 1, 3, 5
               if ( odd ) for ( int j = 1 ; j <= i ; j++ )
                   System.out.print(" " + j);
               else // For even numbers, like 2, 4, 6
                   for ( int j = i ; j > 0 ; j-- )
                       System.out.print(" " + j);
               System.out.println();
           }
       }
   }

The output is then:

   run:
                       1
                        2 1
                   1 2 3
                        4 3 2 1
               1 2 3 4 5
                        6 5 4 3 2 1
   BUILD SUCCESSFUL (total time: 0 seconds)

as expected (I think).

Hope it helps
Mihai


yaseen khan a écrit :
How to print this in java?
1
                            2 1
                       1 2 3
                             4 3 2 1
                  1 2 3 4 5
6 5 4 3 2 1 On Thu, Apr 29, 2010 at 7:26 AM, Kim Ching Koh <[email protected] <mailto:[email protected]>> wrote:

    Hi Mihai,
Thanks Mihai. The quick and dirty way always confused newbies
    like me.  Refer to your point on several small classess, we can
    actually put them all in one class right?  I tried this, and
    (think) it works:
public class MyComparators implements Comparator {
        public int compare(Object o1, Object o2) { // this code can be
    inserted by NetBeans
            throw new UnsupportedOperationException("Not supported yet.");
        }
}
    class MyIntegerComparator implements Comparator {
                public int compare(Object o1, Object o2) {
                    int val1 = ((Integer)o1).intValue();
                    int val2 = ((Integer)o2).intValue();
                    return (val1<val2 ? -1 : (val1==val2 ? 0 : 1));
                }

    }
    class MyStringComparator implements Comparator {

                public int compare(Object o1, Object o2) {
                    String s1 = (String)o1;
                    String s2 = (String)o2;
                    int len1 = s1.length();
                    int len2 = s2.length();
                    int n = Math.min(len1, len2);
                    char v1[] = s1.toCharArray();
                    char v2[] = s2.toCharArray();
                    int pos = 0;
                    while (n-- != 0) {
                        char c1 = v1[pos];
                        char c2 = v2[pos];
                        if (c1 != c2) {
                            return c1 - c2;
                        }
                        pos++;
                    }
                    return len1 - len2;
                }
}
    On Thu, Apr 29, 2010 at 1:38 AM, Mihai DINCA <[email protected]
    <mailto:[email protected]>> wrote:

        Hi KC

        Very nice observation, I confess always having some headaches
        myself with this kind of code.

        The Comparator (java.util.Comparator) is an interface. One can
        define several comparators: one for String, another for
        Integer and so on. This means several small classes, one per
        comparator.

        Instead of doing so, there is this dirty trick that allows to
        have everything in a sole class.

        This is the dirty trick. Let's say you have a simple (a small
        number of methods) interface (or abstract class):

            // MyInterface.java
            public interface MyInterface {
                public String sayHello(String name);
            }

        You can avoid writing the classes implementing this interface
        and use ad-hoc inline code, such as:

            // Test.java
            public class Test {
                public static void main(String[] args){
                    *MyInterface my1 = new MyInterface(){ // The
            implementing class defined here**
                                                      public String
            sayHello(String name){ return "Hello " + name; }
                                                  };
                    MyInterface my2 = new MyInterface(){ // Another
            implementing class defined here
                                                      public String
            sayHello(String name){ return "Bonjour " + name; }
                                                  };*
                    String name = "Bond, James Bond";

                    System.out.println( my1.sayHello(name));
                    System.out.println( my2.sayHello(name));
                }
            }

        With the dirty trick, it is possible to write only two java
        files (MyInterface.java and Test.java). Without it I had to
        write two more classes (with all the redundant heading code).
        It doesn't improve the code readability, but allows to write
        less code (which is important for a sample exercise).

        In the case of the Comparator, the idea was to create a sole
        class file containing a "factory" and keeping together all the
        comparators.

        Hope it helps
        mihai

        kc a écrit :
        Hi,

        I am confused on how the Comparator interface is used in Execise 5.2

            public static Comparator integerComparator() {
                return new Comparator() {

                    public int compare(Object o1, Object o2) {
                        int val1 = ((Integer)o1).intValue();
                        int val2 = ((Integer)o2).intValue();
                        return (val1<val2 ? -1 : (val1==val2 ? 0 : 1));
                    }
                };
            }

        instead of

        public class MyComparator implements Comparator {

                    public int compare(Object o1, Object o2) {
                        int val1 = ((Integer)o1).intValue();
                        int val2 = ((Integer)o2).intValue();
                        return (val1<val2 ? -1 : (val1==val2 ? 0 : 1));
                    }


        }

        Regards
        KC



-- To post to this group, send email to
    [email protected]
    <mailto:[email protected]>
    To unsubscribe from this group, send email to
    [email protected]
    <mailto:javaprogrammingwithpassion%[email protected]>
    For more options, visit this group at
    http://groups.google.com/group/javaprogrammingwithpassion?hl=en




--
Regards,
Mohd Yaseen Khan

--
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/javaprogrammingwithpassion?hl=en

Reply via email to