// 課題10 文字列を逆順に出力 /* #include #define LEN 16 int main(void) { char strA[LEN]; // 文字列を格納する配列 char strB[LEN] = "0123456789abcde"; // 逆順文字列を格納する配列 // 文字列の入力 scanf("%s", strA); // 逆順に格納 ここから length = strlen(strA); // 文字列の長さ halfLen = length / 2; // 文字列の半分の長さ 奇数のときは 切り捨て で中間地点 bottom = length - 1; // 最後の文字がある位置 // 文字列をコピー for (top = 0 ; top <= halfLen ; top++, bottom--) { strB[top] = strA[bottom]; strB[bottom] = strA[top]; } // 最後のナル文字を入れる strB[length] = '\0'; // ここまで printf("%s\n", strB); return 0; } */ import java.util.*; public class Exer10 { public static final int LEN = 16; public static void main(String[] args) { String strA; // 文字列に別文字列を連結して逆順文字列を作るアプローチをとるため,ここでは空文字列で初期化する String strB = ""; // 逆順文字列を格納する // 文字列の入力 Scanner scanner = new Scanner(System.in); strA = scanner.nextLine(); scanner.close(); // 逆順に格納 ここから // Javaでは,2つの文字列や文字列と文字を+演算子を用いて連結できる. // 連結で問題解決をはかる場合,ある文字列に別の文字列を★前後★に連結することになるので, // 配列のように要素を飛び飛びに変更していくアプローチはとらない. // つまりは,strAの先頭から順に文字を取り出し,取り出した順にstrBの先頭に連結していけばよい.(逆でも可) for (int i = 0; i < strA.length(); i++) { // 文字列Stringから文字charの取り出しはcharAtメソッドでできる strB = strA.charAt(i) + strB; // strB += strA.charAt(strA.length()-1-i); //別解,50行目をコメントアウトして,このコメントアウトをやめる } // 最後のナル文字を入れる // Javaではナル文字を扱う必要がない // strB[length] = '\0'; // ここまで // 結果的に大分すっきりしたコードになる System.out.printf("%s\n", strB); } }