package cn.rick.study;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;

/**
*
* @author Rick-bao date 2014-8-29
*
*/
public class SomeBasicCode {

public static void main(String[] args) {

MultiplicationTable();// 乘法表

createRingMatrix();// 螺旋矩阵

System.out.print("\n\n\t\t\t\t本显示由Rick制作,请保留权利 !");
}

/*
* 螺旋矩阵:一个比九九乘法表复杂的算法 author Rick date 2014-8-29 14:31:06
*/
protected static void createRingMatrix() {
while (true) {
String input = "";
System.out.println("请输入矩阵的行列数(正方形):");
InputStreamReader inputStreamReader = new InputStreamReader(
System.in);// 获得输入流
BufferedReader buff = new BufferedReader(inputStreamReader);
try {
input = buff.readLine();// 读取输入流
} catch (Exception e) {
System.out.println(e.toString());
}
int n;// 接收转换的变量
try {
n = Integer.parseInt(input);
} catch (Exception e) {
System.out.println("您输入的不是数字(1、2、3等)!");
continue;
}
System.out.println("这是一个行列数为 " + n + " 的螺旋矩阵数组 \n");
int intA = 1;
int[][] array = new int[n][n];// 说明二维数组
int intB;
// ----- 算法开始 Begin
if (n % 2 != 0)
intB = n / 2 + 1;// 奇数i循环次数
else
intB = n / 2;// 偶数时i循环次数

for (int i = 0; i < intB; i++) {// 外层循环控制行列
// 从左到右 横向
for (int j = i; j < n - i; j++) {
array[i][j] = intA;
intA++;
}
// 从上到下 纵向
for (int k = i + 1; k < n - i; k++) {
array[k][n - i - 1] = intA;
intA++;
}
// 从右到左 横向
for (int I = n - i - 2; I >= i; I--) {
array[n - i - 1][I] = intA;
intA++;
}
// 从下到上 纵向
for (int m = n - i - 2; m > i; m--) {
array[m][i] = intA;
intA++;
}
}

// ------ 输出二维数组内容
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.print(" " + array[i][j] + " ");
}
System.out.println();
}

// ----- 算法结束 End
}

}

/*
* 乘法表 author Rick date 2014年8月29日15:33:36
*/
private static void MultiplicationTable() {
Scanner scanner = new Scanner(System.in);// 获取输入内容
int input = 0;// 接收输入的变量
System.out.println("提示:以下为您打印乘法表,格式与<九九乘法表>一样 !");
System.out.print(" 请输入行数(完成后按 Enter): ");
while (scanner.hasNext()) {
try {
input = scanner.nextInt();
scanner.close();
} catch (Exception e) {
System.out.println("请输入数字(如1、2、3、5等)!");
break;
}
for (int i = 1; i <= input; i++) {
System.out.print("\n");
for (int j = 1; j <= i; j++) {
System.out.print(" " + j + "*" + i + " = " + i * j + " ");
}
}
break;
}
}

}

Java-基础编程(螺旋矩阵&乘法表)的更多相关文章

  1. java基础入门之九九乘法表

    /* 自学java 九九乘法表 Power by Stuart Date: 2015.4.23 */public class Math { public static void main (Strin ...

  2. 6、50道JAVA基础编程练习题跟答案

    50道JAVA基础编程练习题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 程序分析 ...

  3. 50道JAVA基础编程练习题

    50道JAVA基础编程练习题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析 ...

  4. 50道JAVA基础编程练习题 - 题目

    50道JAVA基础编程练习题[1]题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? [2]题目:判断 ...

  5. Java 控制台输入数字 输出乘法表(代码练习)

    最近,回忆了一些刚学习Java时经常练习的一些小练习题.感觉还是蛮有趣的,在回顾时想起好多学习时的经历和坎坷,一道小小的练习题要研究半天,珍重过往,直面未来.下面贡献代码,Java 控制台输入数字 输 ...

  6. MQ java 基础编程

    MQ java 基础编程 编写人:邬文俊 编写时间 : 2006-2-16 联系邮件 : wenjunwu430@gmail.com 前言 通过 2 个多星期对 MQ 学习,在 partner 丁 & ...

  7. Java基础编程题——打印九九乘法表

    package com.yangzl.basic; /** * 九九乘法表 * @author Administrator * */ public class Nine_Nine_Multiplica ...

  8. JAVA基础编程之打印99乘法表

    需求:打印9*9乘法表 技术考核: 1.for嵌套循环 代码: // 打印99乘法表 public static void print99Table() { System.out.println(&q ...

  9. JAVA基础——编程练习(二)

    JAVA编程练习(二) 今天我为了巩固之前的java基础知识的学习,再次进行实战演习,编写了一个小小的java控制台程序,主要是运用java面向对象的思想来完成这个小项目. 一.项目背景介绍 根据所学 ...

随机推荐

  1. 夺命雷公狗—angularjs—21—解决angularjs压缩问题

    我们在实际的开发中往往离不开js的代码压缩,因为这样可以减轻服务器的压力,是的的方法如下所示: <!DOCTYPE html> <html lang="en" n ...

  2. 二项分布 多项分布 伽马函数 Beta分布

    http://blog.csdn.net/shuimu12345678/article/details/30773929 0-1分布: 在一次试验中,要么为0要么为1的分布,叫0-1分布. 二项分布: ...

  3. zw版【转发·台湾nvp系列Delphi例程】HALCON InpaintingCt1

    zw版[转发·台湾nvp系列Delphi例程]HALCON InpaintingCt1 unit Unit1;interfaceuses Windows, Messages, SysUtils, Va ...

  4. 【ruby】ruby基础知识

    Install Ruby(安装) For windows you can download Ruby from http://rubyforge.org/frs/?group_id=167 for L ...

  5. 机器学习实战5:k-means聚类:二分k均值聚类+地理位置聚簇实例

    k-均值聚类是非监督学习的一种,输入必须指定聚簇中心个数k.k均值是基于相似度的聚类,为没有标签的一簇实例分为一类. 一 经典的k-均值聚类 思路: 1 随机创建k个质心(k必须指定,二维的很容易确定 ...

  6. 【python cookbook】【数据结构与算法】14.对不原生支持比较操作的对象排序

    问题:想在同一个类的实例之间做排序,但是它们并不原生支持比较操作. 解决方案:使用内建的sorted()函数可接受一个用来传递可调用对象的参数key,sorted利用该可调用对象返回的待排序对象中的某 ...

  7. Ubuntu12.04 安装Samba

    Ubuntu12.04 安装Samba Ubuntu12.04 安装Samba 本教程介绍了在Ubuntu12.04安装Samba文件服务器,以及如何配置它通过SMB协议共享文件,以及如何将用户添加. ...

  8. vim查找/替换字符串

    1.:s 命令来替换字符串. :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky :n,$s/vivia ...

  9. webservice cxf error:org.apache.cxf.interceptor.Fault: Unmarshalling Error: 意外的元素 (uri:"", local:"ca

    服务器端webservice接口 需要定义@WebParam,如: public ReturnDTO cardBatchSyn(@WebParam(name = "cardBatchSynM ...

  10. phpize 动态添加 PHP 扩展的错误及解决方案

    使用phpize 动态添加 PHP 扩展是开发中经常需要做的事情,但是在 macOS 中,首次使用该功能必然会碰到一些错误,本文列出了这些错误的解决方法. 问题一: 执行 phpize 报错如下: $ ...