Hi~ o(* ̄▽ ̄*)ブ
package edu.week5;
import java.util.Arrays;
import java.util.Scanner;
public class task1 {
public static void main(String []args){
Scanner input = new Scanner(System.in);
// 输入n, n-by-n,同是char(65+n-1)是它的最大值;
System.out.println(" Enter number n: ");
int n = input.nextInt();
// 创建一个二维数组;n-by-n;
int [][]num = new int [n][n];
// 因为该数组的元素必须是字母,又因为char(65+n-1)是它的最大值,所以定义limit_max;
int limit_max = 65+n;
System.out.println(" Enter " +n+" rows of letters separated by spaces : ");
// 定义一个临时字符变量;
char temp_str;
// 定义一个(int)临时字符变量;
int temp_int =0;
//输入字符串(数组)并转化为对应数字;
for(int i =0;i<n;i++){
for(int j=0;j<n;j++){
temp_str= input.next().charAt(0); //输入并提取char(0);
temp_int = (int)temp_str; //转化为数字;
if(temp_str >= 65 && temp_int < limit_max){
num[i][j] = temp_int; //如果在[65,65+n)范围内,将转化的数字代进数组;
}else{
System.out.println(" Wrong input : the letters must be from A to "+(char)(limit_max -1));
return; //如果不在[65,65+n)范围内,输出并结束task1.Java;
}
}
}
int [] num1 = new int [65+n];
for(int i=0;i<n;i++){
Arrays.fill(num1,0);//将num1的65+n个元素全写为1;
for(int j=0;j<n;j++){
if(num1[num[i][j]]==0){
++num1[num[i][j]]; // 如果num[i][j]在[0,65+n)内,则没有问题;
}else{
System.out.println(" The input array is not a Latin square.");
return; //如果num[i][j]不在[0,65+n)内,说明num1[num[i][j]]不存在也不等于0;结束task3.Java
}
}
}
// 结束for,输出;
System.out.println(" The input array is a Latin square");
}
}