將你其中某些問題的答案放在代碼注釋中了.
在埇橋區(qū)等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計、做網(wǎng)站 網(wǎng)站設(shè)計制作按需定制,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,網(wǎng)絡(luò)營銷推廣,成都外貿(mào)網(wǎng)站制作,埇橋區(qū)網(wǎng)站建設(shè)費用合理。
這個程序輸出的是固定的九宮格,我想,是根據(jù)固有的九宮格中的數(shù)字與數(shù)組下標的關(guān)系來寫的代碼。
希望對你有所幫助,加油!
class?S{
public?static?void?main(String[]?args)?{?
int?arr[][]?=?new?int[3][3];?
//創(chuàng)建一個三階方陣??
int?a?=?2;????????
//第3行的行下標
//???這里是什么意思,2從何而來
//A:java中數(shù)組的下標從0開始
int?b?=?3/2;????
//第2列的列下標
//???同上?
//A:這里由于b=1,(int)/(int),java中數(shù)組的下標從0開始
for(int?i=1;i=9;i++){??
//給數(shù)組賦值???
arr[a++][b++]?=?i;??
if(i%3==0){?????
//如果i是3的倍數(shù)——————???為什么要判斷是不是3的倍數(shù)?
a?=?a-2;
//————————————————???if...else里面的語句是什么意思,作用是什么???
b?=?b-1;//————————————————???同上??
}
//使a,b回到起點:a=2,b=1;
else{???????
//如果i不是3的倍數(shù)//————————————————???同上????
a?=?a%3;???
b?=?b%3;???
}??
}
//????九宮格的每一行、每一列、對角線都等于15,
//???但是這里連一個15這個數(shù)字都沒有出現(xiàn),但還是成功輸出
//————————————————————???他是怎么做到的?
System.out.println("輸出九宮格:");???
//遍歷輸出九宮格??
for(int?i=0;i3;i++){?
for(int?j=0;j3;j++){??
System.out.print(arr[i][j]+"??");?
}
System.out.print("\n");//從你的程序中將此語句上移到此位置?
}
}
}
/*直接復制運行就可以,每一行的九個數(shù)字代表一個九宮格的9個數(shù)字,從左到右,從上到下*/
import?java.util.ArrayList;
import?java.util.Arrays;
public?class?Test1?{
private?static?ArrayListString?arrangeList?=?new?ArrayListString();?
?public?static?void?main(String[]?args)?{
String?str?=?"123456789";//你要排列組合的字符串
char?list[]?=?str.toCharArray();//將字符串轉(zhuǎn)換為字符數(shù)組
genernateData(list,?0,?list.length?-?1);//參數(shù)為字符數(shù)組和0和字符數(shù)組最大下標
int?arr[]=new?int[9];
for(String?str1?:?arrangeList){
for(int?k=0;k9;k++){
arr[k]=Integer.parseInt(str1.substring(k,k+1));
}
if(arr[0]+arr[1]+arr[2]==15arr[3]+arr[4]+arr[5]==15arr[6]+arr[7]+arr[8]==15arr[0]+arr[3]+arr[6]==15arr[1]+arr[4]+arr[7]==15arr[2]+arr[5]+arr[8]==15arr[0]+arr[4]+arr[8]==15arr[2]+arr[4]+arr[6]==15){
System.out.println(Arrays.toString(arr));
}
}
}
?
public?static?void?genernateData(char?list[],?int?k,?int?m)?{
?if?(k??m)?{
?StringBuffer?sb?=?new?StringBuffer();//創(chuàng)建一個StringBuffer對象sb
?for?(int?i?=?0;?i?=?m;?i++)?{
?sb.append(list[i]);//循環(huán)將字符數(shù)組值追加到StringBuffer中
?}
?arrangeList.add(sb.toString());
?}?else?{
?for?(int?i?=?k;?i?=?m;?i++)?{
?swapData(list,?k,?i);//將下表為k和i的值調(diào)換位置
?genernateData(list,?k?+?1,?m);
?swapData(list,?k,?i);
?}
?}
}
private?static?void?swapData(char?list[],?int?k,?int?i)?{
char?temp?=?list[k];
list[k]?=?list[i];
list[i]?=?temp;
}
}
要求:根據(jù)輸入的數(shù)字n,如:3,5,7...以矩陣顯示n行n列數(shù),這些數(shù)由1~n*n構(gòu)成,要求矩陣的每行每列及對角線上n個數(shù)之和相等 預備知識: 在距陣中,1在第一行正中,隨后的數(shù)字應放到上一個數(shù)字的右上方方格中,如果向上不行,就放到該列的最下方格子;如果向右不行,就放到該行的最左邊;如果都不行,就放到上一個數(shù)字的正下方;如果目標格子中已經(jīng)有數(shù)字,也放到上一個數(shù)字的正下方 思路: 1) 使用2維數(shù)組預備存儲1~n*n這些數(shù)字 2) 1是放到第一行正中的,所以其索引號是:[0][(n-1)/2] 3) 隨后的數(shù)字,其索引號原則如下 1 num的行索引為 num-1 的 (行索引-1) , num的列索引為 num-1 的 (列索引+1) 2如果發(fā)現(xiàn)num的行,列索引都越位(-1或n),則 num的行索引為 num-1 的 (行索引+1) , num的列索引為 num-1 的 (列索引) 3如果發(fā)現(xiàn)num的行,列索引指向的位置已經(jīng)有數(shù)字,則 num的行索引為 num-1 的 (行索引+1) , num的列索引為 num-1 的 (列索引) 4如果發(fā)現(xiàn)num的行越位(-1),則 num的行索引為n-1 5如果發(fā)現(xiàn)num的列越位(n),則 num的列索引為0 import java.util.Scanner; public class JiuGong { public static void main(String[] args) { Scanner s = new Scanner(System.in); int x = s.nextInt(); //輸入長度 int h = 0; //行 //在距陣中,1在第一行正中 int l = x / 2; //列 int[][] a = new int[x][x]; for (int i = 1; i = x * x; i++) { a[h][l] = i; //運行提示溢出 //隨后的數(shù)字應放到上一個數(shù)字的右上方方格中 h--; l++; //3.如果都不行,就放到上一個數(shù)字的正下方 if (h 0 l = x) { //先返回上一個數(shù)字 h++; l--; //再下移一行 h++; } //1.如果向上不行,就放到該列的最下方格子 else if (h 0) { h = x - 1; } //2.如果向右不行,就放到該行的最左邊 else if (l = x) { l = 0; } //4.如果目標格子中已經(jīng)有數(shù)字,也放到上一個數(shù)字的正下方 else if (a[h][l] 0) { //先返回上一個數(shù)字 h++; l--; //再下移一行 h++; } } //打印九宮格 for (int j = 0; j x; j++) { for (int k = 0; k x; k++) { System.out.print(a[j][k] + " "); } //換行 System.out.println(); } } }
采納哦