LatinMatrix
package ccnu;
public class Demo07 {
public static void main(String[] args) {
/*Node head = create(4); Node p = head; do{ System.out.print(p.data); p = p.next; }while(p != head);*/
int[][] latin = latinMatrix(4);
for(int[] i : latin){
for(int ii:i){
System.out.print(ii);
}
System.out.println();
}
}
public static int[][] latinMatrix(int n) {
if (n <= 0) {
return null;
}
int[][] latin = new int[n][n];
Node head = create(n);
if (head == null) {
return null;
}
Node p = head;
for (int i = 0; i < n * n; i++) {
latin[i / n][i % n] = p.data;
if ((i + 1) % n == 0) { // 当前行已完毕
head = head.next; // 下一行的开始节点为上一行的开始节点的后继节点
p = head;
} else {
p = p.next;
}
}
return latin;
}
public static Node create(int n){
if(n <= 0){
return null;
}
int i = 1;
Node head = new Node(i);
Node rear = head;
i++;
while(i <= n){
Node tmp = new Node(i);
rear.next = tmp;
rear = tmp;
i++;
}
rear.next = head;
return head;
}
private static class Node{
private int data;
private Node next = null;
public Node(int data){
this.data = data;
}
}
}
菱形打印
package ccnu.allTest;
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int level;
boolean tag;
do {
System.out.print("请输入层数:");
level = sc.nextInt();
} while (level <= 0 || level % 2 == 0);
System.out.print("实心或空心(false:实心,true:空心):");
tag = sc.nextBoolean();
print(level, tag); // false表示实心菱形
sc.close();
}
public static void print(int level, boolean tag){ // 打印菱形,tag为false表示实心,否则表示空心
int n = (level + 1) / 2;
int space = n, nonSpace = -1;
for(int i = 1; i <= level; i++){
if(i <= n){ // 上半层
space -= 1;
nonSpace += 2;
}else{ // 下半层
space += 1;
nonSpace -= 2;
}
printCharacter(space, ' ', tag);
printCharacter(nonSpace, '*', tag);
System.out.println();
}
}
public static void printCharacter(int n, char ch, boolean tag){
for(int i = 1; i <= n; i++){
if(tag && i > 1 && i < n){
System.out.print(' ');
continue;
}
System.out.print(ch);
}
}
}