今天学长在面试的时候遇到了一道题,然后让大家做一做。

在不看下面的答案之前,悠闲的朋友们一起来抖动一下大脑吧!

以下是我的想法:

import java.util.Scanner;
public class Case02 {
    private static Scanner sc = new Scanner(System.in);
    public static void main(String[] args) {
        System.out.println("n=2\n1*2*5*6\n--3*4\n\nn=3\n1*2*3*10*11*12\n--4*5*8*9\n----6*7\n");
        System.out.println("想查看其他数字如上的结构吗?请输入一个数字n:");
        int n = sc.nextInt();
        int a[] =new int[n*2];
        int[] c = null;
        for (int i = 1; i < n; i++) {
            int x = 0;
            //只走一次的for循环
            if( i == 1 ){
                for (int j = 1; j <=  n*(n+1) && i == 1; j++) {
                    if( j == n*(n+1) ){
                        System.out.print( j );
                        a[x] = j;
                        x++;
                    }else if( j <= n || j > n*n ){
                        System.out.print( j + "*");
                        a[x] = j;
                        x++;
                    }
                }
                System.out.println();
                System.out.print("--");
                //第一次进入方法是使用的是a数组
                c = getNextArray(a, i ,n );
            }else{//其他都是c数组
                c = getNextArray(c, i ,n );
                //用来填充的横岗"--"
                String nvl = "";
                for (int j = 0; j < i; j++) {
                    nvl += "--";
                }
                System.out.print( nvl );
            }
            //输出
            for (int j = 0; j < c.length; j++) {
                if( j == c.length-1 ){//排除最后一个*
                    System.out.print(c[j]);
                }else{
                    System.out.print(c[j]+"*");
                }
            }
            System.out.println();
        }
    }
    
    /**
     * 根据当前行数据来获取下一行数据的值
     * @param a    上一个数组
     * @param count 第几行
     * @param n 用户输入的数字
     * @return
     */
    private static int[] getNextArray( int[] a ,int count , int n){
        int[] b = new int[(a.length/2-1)*2];
        int x = 0;
        for (int i = 0; i < a.length; i++) {
            if( b.length != x ){
                //把正中间的两个数删除
                if( i < a.length/2-1 ){
                    b[x] = a[i]+(n-count+1);
                    x++;
                }else if(i > a.length/2){
                    b[x] = a[i]-(n-count+1);
                    x++;
                }
            }
        }
        return b;
    }
}

结果是对的,但是我是根据自己的想法一步一步写下了的。并没有什么技巧,就像我从小就喜欢数学,但是我只喜欢做难题一样,只做自己喜欢的事情。

以下是参考答案:

import java.util.Scanner;
public class Case {
    @SuppressWarnings("resource")
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int n = sc.nextInt();
        int c = 0;
        int max = n*(n+1);
        int r = 0;
        for (int i = n; i >= 1; i--) {
            for (int j = 0; j < n-i; j++) {
                System.out.print("--");
            }
            for (int k = 0; k < i; k++) {
                c++;
                System.out.print(c+"*");
            }
            max = max - i;
            r = max;
            for (int k = 0; k < i; k++) {
                r++;
                if(k!=0){
                    System.out.print("*");
                }
                System.out.print(r);
            }
            System.out.println();
        }
    }
}

  世界上聪明的人很多,老实的人很多,努力的人很多。也许你现在这些都做到了,但坚持下来的很少。

所以,不该骄傲,不该浮躁。不该在看到别人不学习时就放弃了自己。

Java面试题:n=2\n1*2*5*6\n--3*4\n\nn=3\n1*2*3*10*11*12\n--4*5*8*9\n----6*7\n如何实现如上结构的数据的更多相关文章

  1. java面试题(转)

    1.面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面:- 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这些 ...

  2. 收集了50道基础的java面试题

    下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最 ...

  3. 转:Java面试题集(1-50)

    Java程序员面试题集(1-50) http://blog.csdn.net/jackfrued/article/details/17403101 一.Java基础部分 1.面向对象的特征有哪些方面? ...

  4. Java面试题全集(上)转载

    Java面试题全集(上)   2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是 ...

  5. 史上最全Java面试题整理(附参考答案)

    下列面试题都是在网上收集的,本人抱着学习的态度找了下参考答案,有不足的地方还请指正,更多精彩内容可以关注我的微信公众号:Java团长 1.面向对象的特征有哪些方面? 抽象:将同类对象的共同特征提取出来 ...

  6. 经典Java面试题收集

    1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这些 ...

  7. 近5年常考Java面试题及答案整理(一)

    下列面试题都是在网上收集的,本人抱着学习的态度找了下参考答案,有不足的地方还请指正. 1.面向对象的特征有哪些方面? 抽象:将同类对象的共同特征提取出来构造类. 继承:基于基类创建新类. 封装:将数据 ...

  8. 最有价值的50道java面试题 适用于准入职Java程序员

    下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最 ...

  9. Java面试题全集(上)

    2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对 ...

随机推荐

  1. (转)[C++语法] 关键字typedef用法

    转自http://www.cnblogs.com/SweetDream/archive/2006/05/10/395921.html C/C++语言中的typedef相信大家已经不陌生,本文对C/C+ ...

  2. NOSQL Mongo入门学习笔记 - C++连接Mongodb(三)

    OS环境: Centos 7.1 release X86_64 编译环境: G++ 4.8.3 已经成功搭建好了Mongodb,也初步在命令行中的查询与写入数据的基本方法,现在通过C++来连接Mong ...

  3. 使用SqlDataAdapter时,需要注意的几点

    1.SqlDataAdapter内部通过SqlDataReader获取数据,而默认情况下SqlDataReader不能获知其查询语句对应的数据库表名,所以下面的代码: string strConn,s ...

  4. Extjs4.2布局——layout: accordion(Ext.layout.container.Accordion)

    API这样介绍这种布局: 示例:(来自API)注:打开默认展开第一个面板. Ext.create('Ext.panel.Panel', { title: 'Accordion Layout', wid ...

  5. hibernate简介(Session,几种状态,方法······等)

    1.Hibernate是什么?          Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数 ...

  6. IOS 数组分组 Grouped NSArray

    NSMutableSet *set=[NSMutableSet set]; [_list enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BO ...

  7. ASP.NET MVC 数据分页思想及解决方案代码

    作为一个程序猿,数据分页是每个人都会遇到的问题.解决方案更是琳琅满目,花样百出.但基本的思想都是差不多的. 下面给大家分享一个简单的分页器,让初学者了解一下最简单的分页思想,以及在ASP.NET MV ...

  8. STM32移植UCGUI3.90笔记

    在MDK环境下,终于将3.90版本的UCGUI移植到STM32下了,在网上看到的都是例程代码,很少看到有关于在STM32下移植UCGUI的教程方法,为了方便大家,特写此移植方法,大家可以借鉴(有错误之 ...

  9. 解决ListView 跟ScroolView 共存 listItem.measure(0, 0) 空指针

    在网上找到ListView 和ScroolView 共存的方法无非是给他每个listview 重新增加高度,但是android 的设计者始终认为这并不是一种好的实现方法.但是有的时候有必须要用这种蛋疼 ...

  10. Ubuntu Server 中resolv.conf重启时被覆盖的问题

    /etc/resolv.conf中设置dns之后每次重启Ubuntu Server时该文件会被覆盖,针对这种情况找了一些个解决方法 防止/etc/resolv.conf被覆盖的方法 方法一 1.需要创 ...