アプリ版:「スタンプのみでお礼する」機能のリリースについて

Java です

途中は省いてますが

for(int i = 0; i < 25; i ++) {
s2[i][0] = s[i][24];
for(int j=0; j < 25; j++) {
s2[i][j] = s[i][j-1];
}
}

これを実行する事でsの2行目がs2の3行目のように
ズレていく仕組みが分かりません。
ご教授お願いします

質問者からの補足コメント

  • 24行目の中身すべてをそのままs2の0行目にコピーする。次にsの1行目をs2の2行目、sの2行目をs2の3行目という具合に、sの中身を1行ずつずらしながらs2にコピーする。これが終わると、s2の中身はsをそっくり1行分下にずらしたものになっている。

      補足日時:2022/05/20 23:44

A 回答 (4件)

明らかにインデックス(j)が負になるので


読む気失せた( ̄ー ̄)
    • good
    • 0

おそらく推測ですが、


sとか、s2は「string型」の配列で
s … 文字列を何行か含んでいる。
s[i] … そのsの中の「i行目」の文字列。
s[i][j] … そのs[i]の中の「j行目」の文字列。

例えば、sが2行のstring型の2行の配列で
s={“abcde”, “fghij”}
だったとすると、
s[0]=“abcde”(0行目の文字列)で、
s[0][3]=‘d’(0行目の文字列の3番目の文字。)です。
※Javaの場合、配列の添え字i、jは0から始まることに注意。

まず、コレが分かるかどうかです。
    • good
    • 0

不足しているコードを追加しましたが、実行時エラーが起きて動きません。


動くソースで質問して下さい。

エラーメッセージ
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 25
at Main.main(Main.java:8)

ソース
class Main {
public static void main(String[] args) {
char[][] s = new char[25][25];
char[][] s2 = new char[25][25];
for(int i = 0; i < 25; i ++) {
s2[i][0] = s[i][24];
for(int j = 0; j < 25; j++) {
s2[i][j] = s[i][j-1];
}
}
}
}
    • good
    • 0

質問の意味が分からないので、補足してください。

    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!