「java螺旋打印」螺旋打印二维数组java

博主:adminadmin 2022-12-01 05:29:07 52

本篇文章给大家谈谈java螺旋打印,以及螺旋打印二维数组java对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

JAVA 实现打印用什么方法?

Print.java--打印内容定义

[code]

import java.awt.*;

import java.awt.event.*;

import java.awt.print.*;

import java.awt.image.*;

import javax.swing.*;

import javax.swing.event.*;

import javax.swing.border.*;

import javax.swing.event.*;

import java.util.*;

import java.io.*;

public class Print implements Printable{

int m_wPage;

int m_hPage;

int m_orientation;

Printable m_target;

int maxNumPage=1;

String title="数据表格打印";

Font titleFont=new Font("黑体",Font.BOLD,14);

boolean hasTail=true;

int tailAlign=0;

int headAlign=0;

int topSpace=0;

int leftSpace=0;

int yStart=0;

int yEnd=0;

int xStart=topSpace;

int xEnd=0;

int x=0,y=0;

String strTemp="打印内容";

public void doPrint(){

try{

m_orientation=PageFormat.PORTRAIT;

//设置打印对象,默认纸张

PrinterJob prnJob=PrinterJob.getPrinterJob();

PageFormat pageFormat=prnJob.defaultPage();

pageFormat.setOrientation(m_orientation);

m_wPage=(int)(pageFormat.getWidth());

m_hPage=(int)(pageFormat.getHeight());

//将待打印的窗体根据默认纸张设置传入打印对象

prnJob.setPrintable(this,pageFormat);

if(!prnJob.printDialog()) return;

prnJob.print();

}catch(PrinterException ex){

ex.printStackTrace();

System.err.println("打印错误:"+ex.toString());

}

}

/**

* 初始化打印参数

*/

public void initPrintParameter()

{

}

/**

*构造打印内容,以送打印机打印

*/

public int print(Graphics pg,PageFormat pageFormat,

int pageIndex) throws PrinterException{

//初始化打印参数

initPrintParameter();

//将画布设置为页面大小

pg.translate((int)pageFormat.getImageableX(),

(int)pageFormat.getImageableY());

int wPage=0;

int hPage=0;

//根据打印机页面设置调整画布大小

if(pageFormat.getOrientation()==pageFormat.PORTRAIT){

wPage=(int)pageFormat.getImageableWidth();

hPage=(int)pageFormat.getImageableHeight();

}

else{

wPage=(int)pageFormat.getImageableWidth();

wPage+=wPage/2;

hPage=(int)pageFormat.getImageableHeight();

pg.setClip(0,0,wPage,hPage);

}

wPage=wPage-2*leftSpace;

hPage=hPage-2*topSpace;

xStart=leftSpace;

xEnd=wPage-2;

//为画布设置颜色和字体

int y=topSpace;

pg.setFont(titleFont);

pg.setColor(Color.black);

//画标题,并使其居中

Font fn=pg.getFont();

FontMetrics fm=pg.getFontMetrics();

y+=fm.getAscent();

alignText(title,pg,y,xStart,xEnd,headAlign);

y+=30;

x=leftSpace+2;

Font headerFont=new Font("宋体",Font.BOLD,14);

pg.setFont(headerFont);

fm=pg.getFontMetrics();

int h=fm.getAscent();

yStart=y-1;

y+=h;

pg.setFont(headerFont);

fm=pg.getFontMetrics();

int header=y;

h=fm.getHeight();

//计算行高,每页行数,总行数和指定页码的起始行、结束行

int rowH=Math.max(h,10);

int tailH=rowH+30;

int rowPerPage=0;

int leftPix=0;

if(hasTail){

rowPerPage=(hPage-header-tailH)/rowH;

leftPix=(hPage-header-tailH)%rowH;

yEnd=hPage-leftPix-tailH+2;

}

else{

rowPerPage=(hPage-header)/rowH;

leftPix=(hPage-header)%rowH;

yEnd=hPage-leftPix+2;

}

pg.drawString(strTemp,x,y);

//画表格边框

pg.drawLine(xStart,yStart,xStart,yEnd);

pg.drawLine(xStart,yStart,xEnd,yStart);

pg.drawLine(xEnd,yStart,xEnd,yEnd);

pg.drawLine(xStart,yEnd,xEnd,yEnd);

//打印页码

if(hasTail){

int pageNumber=pageIndex+1;

String s="第"+pageNumber+"页";

alignText(s,pg,yEnd+30,xStart,xEnd,tailAlign);

}

System.gc();

return PAGE_EXISTS;

}

/**

* 文字排列,坐标在y处,显示范围(start-end)

* 0表示居中显示,1表示左对齐,2表示右对齐

*/

private void alignText(String s,Graphics pg,int y,int start,

int end,int mode){

Font fn=pg.getFont();

FontMetrics fm=pg.getFontMetrics();

int wString=fm.stringWidth(s);

int x=start;

switch(mode)

{

case 0:

if((end-start-wString)0) x=start+(end-start-wString)/2;

break;

case 1:

break;

case 2:

if((end-start-wString)0) x=start+(end-start-wString);

break;

}

pg.drawString(s,x,y);

}

public static void main(String[] args){

Print p=new Print();

p.doPrint();

}

}

[code]

运行方法:

javac -d . Print.java

java Print

自己运行一下

java数字螺旋方阵

按照你的要求,改写的逆时针螺旋方阵的Java程序如下,你看看吧

import java.util.*;

public class 作业2 {

 public static void main(String[] args) {

 int size;

 Scanner sc = new Scanner(System.in);

 System.out.println("输入数组大小:");

 size = sc.nextInt();

 

 int count = 0;

 int[][] array = new int[size][size];

 int m = 0, n = 0;

 int down = 0, right, up, left = 0;

 up = size - 1;

 right = size - 1;

 int max = size * size;

 while (true) {

 count++;

 if (m == left) {

 array[n][m] = count;

 n++;

 if (n  up) {

 n = up;

 m++;

 }

 } else if (n == up) {

 array[n][m] = count;

 m++;

 if (m  right) {

 m = right;

 up--;

 }

 } else if (m == right) {

 array[up][m] = count;

 up--;

 if (up  down) {

 up = down;

 right--;

 }

 } else if (up == down) {

 array[down][right] = count;

 right--;

 if (right = left) {

 right = left;

 down++;

 }

 } else {

 left++;

 right = n - 1;

 up = m - 1;

 m = left;

 n = down;

 count--;

 }

 /////////////////////////////////////////////

 if (count = max) {

 break;

 }

 } // end loop

 for (int i = 0; i  size; i++) {

 for (int j = 0; j  size; j++) {

 System.out.print(array[i][j] + "\t");

 }

 System.out.println();

 }

 }

运行结果

输入数组大小:

3

1 8 7

2 9 6

3 4 5

java螺旋矩阵求助!

package cn.com.micc.javatwo; //根据实际情况修改

//蜗牛螺旋矩阵 请仔细研究矩阵阶数变化时数据的迁移规律

//上一阶矩阵会"整体"向右上或左下移动

public class AntiClockWiseArray {

public static int[][] getResult(int n) {

int[][] n1 = new int[1][1];

n1[0][0] = 1;

if (n == 1)

return n1;

int[][] result = new int[n][n];

int[][] temp = getResult(n - 1);

if (0 == (n - 1) % 2)

result = LeftDownMove(temp, n - 1); //n-1阶矩阵向左下移动

else

result = RightUpMove(temp, n - 1); //n-1阶矩阵向右上移动

return result;

}

public static int[][] LeftDownMove(int[][] in, int moment) {

int temp = moment * moment;

int nums = moment * 2 + 1;

int[][] out = new int[moment + 1][moment + 1];

//新矩阵补入上一阶矩阵的值

for (int i = 0; i moment; ++i)

for (int j = 0; j moment; ++j)

out[i + 1][j] = in[i][j];

//两个循环添加新矩阵新值

for (int k = 0; k moment + 1; ++k)

out[0][k] = temp + nums - k;

for (int l = 1; l moment + 1; ++l)

out[l][moment] = temp + nums - moment - l;

return out;

}

public static int[][] RightUpMove(int[][] in, int moment) {

int temp = moment * moment;

int nums = moment * 2 + 1;

int[][] out = new int[moment + 1][moment + 1];

//新矩阵补入上一阶矩阵的值

for (int i = 0; i moment; ++i)

for (int j = 0; j moment; ++j)

out[i][j + 1] = in[i][j];

//两个循环添加新矩阵新值

for (int k = 0; k moment + 1; ++k)

out[k][0] = temp + 1 + k;

for (int l = 1; l moment + 1; ++l)

out[moment][l] = temp + moment + 1 + l;

return out;

}

public static void printArray(int[][] temp, int n) {

//格式化打印矩阵

for(int i = 0; i n; ++i)

{

for(int j = 0; j n; ++j)

System.out.printf("%5d", temp[i][j]);

System.out.println();

}

}

public static void main(String[] args) {

printArray(getResult(6), 6); //输入阶数

}

}

output:

10阶

82 81 80 79 78 77 76 75 74 73

83 50 49 48 47 46 45 44 43 72

84 51 26 25 24 23 22 21 42 71

85 52 27 10 9 8 7 20 41 70

86 53 28 11 2 1 6 19 40 69

87 54 29 12 3 4 5 18 39 68

88 55 30 13 14 15 16 17 38 67

89 56 31 32 33 34 35 36 37 66

90 57 58 59 60 61 62 63 64 65

91 92 93 94 95 96 97 98 99100

如何用Java控制台打印螺旋藻

什么是螺旋藻……

还有你这个是一行输出?

看了下没什么规律啊

没什么规律和算法的话,你直接string输出吧……

java 循环打印

public class Test {

public static void main(String args[]) {

int i, j, k;

/* 控制上半部的行数 */

for (i = 0; i = 3; i++) {

/* 打印*号前面的空格 */

for (j = 0; j = 2 - i; j++)

System.out.print(" ");

/* 打印每行的* */

for (k = 0; k = 2 * i; k++)

System.out.print("*");

System.out.println();

}

// 下半部分

for (i = 0; i = 2; i++) {

for (j = 0; j = i; j++)

System.out.print(" ");

for (k = 0; k = 4 - 2 * i; k++)

System.out.print("*");

System.out.println();

}

}

}

java螺旋打印的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于螺旋打印二维数组java、java螺旋打印的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-01,除非注明,否则均为首码项目网原创文章,转载请注明出处。