1. Jianjie
Zai women chuli yiwei shuzu de shihou, yiban dou bijiao jiandan: shuju xiang yitiao xian yiyi pai kai, yige zhi jie zhe yige zhi. Zhezhong geshi feichang shiyong yu liebiao — biru yige xuesheng de chengji, meitian de wendu, timu bianhao, huozhe gouwuche li de shangpin.
Dan zai shiji zhong, hen kuai jiu hui chuxian yiwei yijing bu gou de qingkuang. Shuju kaishi kan qilai xiang yi ge biaoge: women you hang, you lie, erqie mei ge yuansu bu zai zhiyou yige suoyin, er shi you liang ge. Li ru, zai chengji dengji biao li, hang dui ying xuesheng, lie dui ying kemu. Zai youxi chang di li, hang he lie gou cheng gezi wangge. Zai shuxue li zhe shi juzhen; zai youxi li shi ditu he guanqia; zai richang renwu li shi shikebiao he rili.
Zai zhexie qingkuang zhong you yi ge zhongyao tedian: biaoge de mei yi hang dou you xiangtong de changdu. Ruguo yige xuesheng you wu men kemu de chengji, na me qita suoyou xuesheng tongyang ye you zhe wu men kemu. Ruguo youxi chang di de kuandu shi shi ge gezi, na me mei yi hang jiu ganghao you shi ge yuansu. Zheng shi zhe ge shuxing, rang women neng ba shuju siwei hua wei juxing biaoge, er bu shi yixie huxiang duli de hang de jihe.
Zheyang de jiegou jiu jiao zuo erwei shuzu。
2. Lei xing Array<IntArray> yi ji women fu yu ta de yiyi
Cong Kotlin yuyan de jiaodu kan, erwei shuzu bing bu shi yige duli de leixing. Women yong de rengran shi shuxi de Array<IntArray>。Zai xingshi shang, zhe yiwei zhe “yi ge shuzu, qi yuansu shi zhengshu shuzu”。Kotlin bing bu zhidao women shi fou yao ba zhe ge jiegou yong zuo juxing biaoge, haishi yong zuo mei hang changdu bu tong de shuzu jihe.
Suoyi zheli xuyao qufen jishu cengmian he luoji cengmian. Jishu shang, Array<IntArray> zhishi qiantao shuzu. Dan zai luoji shang, zai ben jiangyi de fanwei nei, women renwei mei ge neibuceng shuzu dou you xiangtong de daxiao. Zhe bu shi yuyan guize, er shi women zuowei chengxuyuan de yue ding.
Huan ju hua shuo, bianyiqi bing bu hui zudang ni chuangjian changdu bu yi de hang. Dan ruguo ni zheme zuo, jiu hui pohuai “erwei biaoge” de moxing, er naxie yilai juxing xingtai de daima jiu hui kaishi chuxian bu zhengque de xingwei. Suoyi xuyao shi xian dacheng gongshi: zai ben jiangyi li, Array<IntArray> zhishi biaoge, er bu shi “juchi (jagged)” jiegou.
3. Ruhe zai naozi li zhengque di xiangxiang erwei shuzu
Ruguo cong yikaishi jiu jianli zhengque de xingxiang, hui feichang you bangzhu. Zhe bu shi shenme “mofa juzhen”, ye bu shi teshu shujuleixing. Ta zhishi yige putong shuzu, li mian zhuang zhe qita shuzu. Mei ge neibuceng shuzu jiu shi biaoge de yi hang.
Dang women xie table[0] shi, women na dao de bing bu shi “di yi lie” huozhe “biaoge de yi bufen”。Women na dao de shi yi ge wanzheng de yiwei shuzu — di yi hang. Ta you ziji de daxiao, ziji de indices, ziji de yuansu. Zhiyou zai zhi hou, dang women fangwen table[0][2] shi, women cai qu de dao zhe yi hang li de mou yi ge juti yuansu.
Zheng yinwei ruci, fangwen yuansu de xingshi cai hui kan qilai xiang liang ge lianxu de buzhou: xian xuan hang, zai xuan hang nei de yuansu. Ruguo ni ba biaoge kan zuo “hang de jihe”, zhe ge shunxu jiu hen ziran, ye hen luoji.
Ye yinwei ruci, women cai you le changjian de zuobiao biaoshi: [row][col],qi zhong row shi hang hao, col shi lie hao. Suoyin he Kotlin suoyou shuzu yiyang, dou cong 0 kaishi. Di yi hang shi row = 0,di yi lie shi col = 0。Ruguo biaoge you san hang si lie, na me suoyin de hefa fanwei shi: hang cong 0 dao 2,lie cong 0 dao 3。
4. Chuangjian erwei shuzu
Zui zhiguan de chuangjian fangshi shi: mingque di ba mei yi hang yi hang lie chu lai. Zheyang de daima hen rongyi yuedu, ye neng yiyan kan chu biaoge de xingzhuang.
val table = arrayOf(
intArrayOf(10, 20, 30),
intArrayOf(40, 50, 60),
intArrayOf(70, 80, 90)
)
Cong zhe duan daima, women mashang jiu neng kan chu: biaoge you san hang, mei hang san ge yuansu. Zhe zhong fangshi tebie shiyong yu shili, ceshishuju he jiaoxue tishu.
Dan zai shiji kaifa zhong, changchang shi: biaoge chidu shi yizhi de, dan shuju hui zai zhihou jisuan huo tianchong. Li ru, ni xuyao chuangjian yige guanding daxiao de youxi chang di, huo yige yonglai baocun zhongjian jieguo de biaoge. Zhezhong qingkuang xia, hui yong Array de gouzaoqi: xian zhiding hang shu, ran hou wei mei yi hang chuangjian zhiding changdu de shuzu.
val rows = 3
val cols = 4
val table = Array(rows) { IntArray(cols) }
Zheli xuyao lijie: mei yi hang dou shi duli chuangjian de. Suoyi jieguo shi yi ge mei hang changdu dou yizhi de biaoge, jiegou rengran shi juxing. Zhe ge xingwei hen guanjian: ruguo suoyou hang dou yinyong tong yi ge shuzu, na me xiugai renhe yige yuansu dou hui tongshi yingxiang dao suoyou hang. Kotlin de chuli shi zhengque de, dan liaojie “mu hou zhengzai fasheng shenme” hen you jiazhi.
5. Fangwen yuansu yu biaoge chidu
Fangwen erwei shuzu de yuansu, yong de yongyuan shi shuangchong suoyin. Xian gei hang hao, zai gei lie hao. Li ru, biaodashi table[1][2] yiwei zhe: qu biaoge de di er hang, ran hou zai zhe yi hang li qu suoyin wei 2 de yuansu.
Duqu he xieru dou yiyang jianjie:
val value = table[0][1]
table[2][0] = 42
Yinwei table[row] shi yige putong de yiwei shuzu, ni keyi xiang zhiqian yiyang dui ta caozuo: chaxun size, bianli yuansu, xiugai zhi.
Dui yu juxing biaoge, hen fangbian de zuofa shi shi xian chuliang ta de chidu. Hang shu ke yong table.size huoqu, lie shu ke yong table[0].size huoqu. Zhe zhi suo yi anquan, zheng shi yinwei women yijing yueding suoyou hang changdu xiangtong. Dui yu juchi shuzu, zhe zhong xiejiao jiu bu zai tongyong, zhe ye hui shi xia yi tang jiangyi de zhongyao zhuti.
Zai yong suoyin caozuo shi, yiding yao jizhu shuzu de bianjie. Wei le zhengque fangwen, hang suoyin bixu zai table.indices fanwei nei, lie suoyin bixu zai dangqian hang de hefa suoyin fanwei nei. Dui yu juxing biaoge, jiancha lie suoyin shi keyi cankao di yi hang, yinwei qita hang changdu dou yizhi.
Zui changjian de cuowu zhi yi shi: ba hang shu he lie shu gao hun. table.size shi hang de shuliang, er bu shi “zheng ge biaoge de zong daxiao”。Yidan hunxiao, nested loops jiu hui bian de bu zhengque, chengxu bu shi baocuo gua le, jiu shi output qiguai de jieguo. Suoyi cong yikaishi jiu yao zai naozi li qingchu qufen zhe liang ge weidu.
6. Bianli erwei shuzu: ruhe an shunxu duqu biaoge
Caizuo erwei shuzu, jiben shang yizhi yizhi dou hui yong dao nested loops. Dan zai xie daima zhiqian, youyong de shi xian gu ding “sikao moxing”: erwei shuzu de duqu fangshi, jiushi xiang du zhi shang de biaoge yiyang — xian na yi zheng hang, ran hou zai zhe yi hang li yige ge xiang hou yi. Suoyi waiceng xunhuan fuze hang, neiceng xunhuan fuze lie.
Dang women xuyao zhidao yuansu de zuobiao shi, women hui yong suoyin. Waiceng xunhuan bianli hang suoyin de hefa fanwei, neiceng xunhuan bianli lie suoyin de hefa fanwei. Yinwei ben jiangyi guanzhu de shi juxing biaoge, suoyou hang de lie shu dou yizhi, suoyi women keyi anquan di yong di yi hang lai qu lie de fanwei.
fun main() {
val table = arrayOf(
intArrayOf(1, 2, 3),
intArrayOf(4, 5, 6)
)
for (r in table.indices) {
for (c in table[0].indices) {
print("[$r,$c]=${table[r][c]} ")
}
println()
}
}
Zheyang bianli you wanquan kongzhi: women suishi zhidao ziji zhengzai chuli na yi hang, na yi lie. Zhe zai xuyao xiugai zhi, panduan tiaojian, huozhe an zuobiao shuchu de shihou tebie zhongyao.
Dan bing fei suoyou qingkuang dou zhen de xuyao zuobiao. Hen duo renwu zhi guanxin zhi benshen. Zhe shi hou, ruguo bu yong suoyin, er shi zhijie dui hang he hang nei yuansu bianli, daima hui geng jianjie.
fun main() {
val table = arrayOf(
intArrayOf(1, 2, 3),
intArrayOf(4, 5, 6)
)
for (row in table) {
for (x in row) {
print("$x ")
}
println()
}
}
Zhe ge banben geng rongyi yuedu, bingqie jiben shang neng paichu yuejie cuowu. Yi ge hen hao de guize shi: ruguo jiejue wenti bu xuyao suoyin, jiu bu yao yong suoyin.
7. Erwei shuzu de jiben caozuo
Hen duo zai yiwei shuzu shang shuxi de caozuo, dao le erwei qingkuang, zhishi “zhan kai” dao liang ceng. Li ru, yao jisuan biaoge suoyou yuansu de zonghe, women xian qu yi hang, ran hou bianli zhe yi hang li de suoyou zhi bing leijia; zhihou zai chu li xia yi hang.
fun main() {
val table = arrayOf(
intArrayOf(1, 2, 3),
intArrayOf(4, 5, 6)
)
var sum = 0
for (row in table) {
for (x in row) {
sum += x
}
}
println(sum) // 21
}
Ruguo renwu shi “qiu mei yi hang de he”, na me yao jizhu mei yi hang shi yige duli de shuzu. Suoyi qiuhe bianliang bixu dui mei yi hang chongxin chuangjian, fouze ni hui de dao yi ge zheng ge biaoge de zonghe.
fun main() {
val table = arrayOf(
intArrayOf(1, 2, 3),
intArrayOf(4, 5, 6)
)
for (r in table.indices) {
var rowSum = 0
for (x in table[r]) {
rowSum += x
}
println("row $r sum = $rowSum")
}
}
An lie qiuhe xuyao ling yi zhong jiaodu. Lie bing meiyou yi ge duying de shuzu jiegou, suoyi dui mei yi lie, women xian gu ding lie suoyin, ran hou bianli suoyou hang, cong mei hang li qu chu zhe ge lie suoyin shang de yuansu.
fun main() {
val table = arrayOf(
intArrayOf(1, 2, 3),
intArrayOf(4, 5, 6)
)
val cols = table[0].size
for (c in 0 until cols) {
var colSum = 0
for (r in table.indices) {
colSum += table[r][c]
}
println("col $c sum = $colSum")
}
}
Zhe duan daima zhi suo yi zhengque, zheng shi yinwei biaoge shi juxing: women queding mei yi hang dou you suoyin wei c de yuansu.
8. An zuobiao xiugai yuansu
Zai erwei shuzu li xiugai zhi, yong de hai shi fangkuohao, zhishi bi yiwei duo le yi ceng. Xian zhi ding hang, zai zhi ding lie. Yao yangcheng yige xiguan: strictly cong zuo dao you du zhe ge biaoshi — xian hang, hou lie.
fun main() {
val table = Array(3) { IntArray(3) }
table[0][0] = 1
table[1][1] = 5
table[2][2] = 9
for (row in table) {
println(row.joinToString())
}
}
Jishi biaoge shi juxing, xiguan shang ye yinggai zuo bianjie jiancha, tebie shi suoyin shi jisuan chulai de, huo cong waibu chuanru de. Jiancha fen liang ceng: xian jiancha hang, zai jiancha lie.
if (row in table.indices && col in table[0].indices) {
table[row][col] += 1
}
9. Chuli erwei shuzu shi de dianxing cuowu
Cuowu 1: zai suoyin li ba hang he lie gao hun.
Zai chuli erwei shuzu shi, zui changjian de wenti zhi yi jiushi suoyin shunxu xie fan. Zai table[row][col] zhong, di yi ge suoyin yongyuan zhi xiang hang, di er ge suoyin yongyuan zhi xiang lie. Ruguo xie cheng table[col][row],daima keneng rengran keyi bianyi, shenzhi zai yiding qingkuang xia “kan qilai neng pao”, dan chengxu luoji yi ding yi jing cuo le. Geng weixian de shi: zhe zhong cuowu bing bu yiding hui zhijie rang chengxu beng kui, suoyi keneng hui hen jiu dou bu bei faxian. Yi ge hao xiguan shi: yong row he col (huozhe r he c) zheyang de mingming, bing ba biaodashi du chu lai: “hang r, lie c”.
Cuowu 2: yong table.indices lai bianli lie.
table.indices miaoshu de shi hang de hefa suoyin, er bu shi lie. Chuxue zhe jingchang zai waiceng he neiceng xunhuan dou yong zhe ge fanwei, yinwei yiwei biaoge shi “duichen” de. Dan zai juxing biaoge li, hang shu he lie shu wanquan keyi bu yiyang, suoyi bianli lie yinggai yong table[0].indices huo table[0].size。Zhe zhi suo yi keyi zheme xie, zheng shi yinwei ben jiangyi jiashe suoyou hang changdu xiangtong.
Cuowu 3: yinwei fanwei cuo wu er yuejie.
Dianxing de “cha 1” cuowu xiang zheyang: for (c in 0..table[0].size)。Zhe yang de xunhuan yiding hui changshi fangwen suoyin wei size de yuansu, dan zhe ge yuansu genben bu cunzai. Zui hou yi ge hefa suoyin yongyuan shi size - 1。Wei le bu yong mei ci dou ke yi si kao zhe ge guanxi, zui hao yong indices: zhe ge fanwei yijing shi zhengque er anquan de.
Cuowu 4: wangji lie bing bu shi shuzu.
Yu hang bu tong, hang zhenzheng cunzai wei shuzu (IntArray), dan lie zhishi luoji shang de biaoshi. Ni bu neng zhijie na dao “yi zheng lie”, ta meiyou ziji de size he indices。Yao chuli mou yi lie, bixu gu ding lie suoyin, ran hou bianli suoyou hang. Changshi “ba lie dang zuo shuzu lai fangwen” jiben shang dou hui dai lai kunhuo he luoji cuowu.
Cuowu 5: renwei renhe Array<IntArray> dou shi juxing.
Zhe shi zheng ge kecheng zhong zui guanjian de yi ge cuowu. Zai ben jiangyi li, women keyi ba Array<IntArray> dang zuo juxing biaoge, bing zai daima li yilai zhe ge jiashe. Dan zhe ge leixing ben shen bing bu baozheng zhe yi dian. Zai xia yi tang jiangyi li, women hui kan dao na zhong mei hang changdu bu tong de shuzu; dao shihou, zhe li kan qilai hen ziran de xie fa jiu bu zai anquan. Suoyi, bu zhi yao dong yufa, geng yao dong ni zhengzai shiyong de shuju moxing.
GO TO FULL VERSION