質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • Java

    14153questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

文字列の最後尾の指定

解決済

回答 7

投稿

  • 評価
  • クリップ 0
  • VIEW 3,975

R.lawliet

score 44

お世話になっております。

最後尾の文字列の取得をしたいのですが、
Eclipseに永遠とエラーを吐かれ、頭を悩ませております。

修正点の指摘を頂けるとありがたいです。
些細な問題かもしれませんが、もうどうしようもなく解けないのでどうかよろしくお願いします。

/*
String型変数msgを"ABCDEFG"で初期化し、
先頭から3文字の文字列を取得し、表示せよ。
また、最後尾の文字列を取得し、表示せよ。
※length()を使うこと*/

エラー箇所、★

package no211_Test_22;

public class Test07 {

    public static void main(String[] args) {
        String msg = "ABCDEFG";
        
        System.out.println("先頭から3文字" + msg.substring(0,3));
        System.out.println("末尾の文字" + msg.substring(★msg.length()-1);★

    }
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 7

+5

最後に1個、括弧")"が足りていませんよ^^;

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/21 09:17

    不覚でしたっ!
    )だけの問題では無かったのですが、
    カッコは連続で書くと何個あるのか分からなくなるので今後気をつけます。
    ご指摘感謝します。

    キャンセル

  • 2015/04/21 13:23

    )だけの問題だけではなかったのですか?
    省略できるので、以下でOKだとおもったのですが。。。
    System.out.println("末尾の文字" + msg.substring(msg.length()-1));

    キャンセル

  • 2015/04/21 17:12

    括弧は元々ついていたのですよ、どうしてもerrorが消えないので色々しながら、
    ここに投稿するときに消えていただけの話で。。。

    今日ここでharu666さんのコードを上書きした後はrununさんの仰る様に元々のコードで通ってしまいました。
    何がどうなっていたのでしょうね・・・
    どこかの文字が全角だったとかそういうのもあったのかもしれません(汗)

    キャンセル

  • 2015/04/21 17:35

    なるほど。そういうことですね。
    解決されて良かったですね^^

    キャンセル

  • 2015/04/21 18:03

    せっかくEclipse使ってるんですからエラーメッセージは読みましょう.
    エラー部分にマウスオーバーすれば何が問題なのか出てきますから.

    キャンセル

checkベストアンサー

+3

substringの定義では以下のように開始から終了のインデックスを指定することになっているので

public String substring(int beginIndex, int endIndex)
この文字列の部分文字列である新しい文字列を返します。部分文字列は、指定された beginIndex か
ら始まり、インデックス endIndex - 1 にある文字までです。したがって、部分文字列の長さは 
endIndex-beginIndex になります。 
 
パラメータ:
  beginIndex - 開始インデックス (この値を含む)
  endIndex - 終了インデックス (この値を含まない) 
戻り値:
  指定された部分文字列 
例外: 
  IndexOutOfBoundsException - beginIndex が負の値である場合、endIndexがこの String オブジェ
    クトの長さより大きい場合、あるいはbeginIndex が endIndex より大きい場合

変数を2つ定義する場合は以下のようになります。こちらの方でしょうか?

    System.out.println("末尾の文字" + msg.substring(msg.length()-1, msg.length()));

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/21 09:13

    ご回答ありがとうございます。
    public String substring(int beginIndex, int endIndex)

    ネットの中で拾って来たものは()の中が1つで書き表されて居たので、
    末尾の時は1つで書くのだと決めつけてしまっておりました。

    必ずしも正解が載せてあるとは限らない、又は自分の場合は当てはまらない構文だったのでしょうね。
    今一度ちゃんと基本の部分を読んで理解しようと思いました。
    ありがとうございました!

    キャンセル

  • 2015/04/21 09:25

    substringは2番目の引数を省略することもできます。

    省略した場合はmsg.length()を指定した時と同じ動作になるはずです。
    動作が確認出来たらmsg.length()を消してみるといいと思います。

    キャンセル

  • 2015/04/21 11:45

    メソッドの引数の意味がわからなければ,調べて見るといいと思いますよ
    今回のString#substringも
    substring(int beginIndex)
    substring(int beginIndex, int endIndex)
    2種類のオーバーロードがあります.
    https://docs.oracle.com/javase/jp/6/api/java/lang/String.html
    ほとんどのクラスにこのようなドキュメントがあるので,
    簡単に調べられますよ.

    まあ今回は単に括弧が足りないだけの話だったので,あまり関係ないかもしれませんが.

    キャンセル

  • 2015/04/21 17:15

    haru666さん、
    貴方の仰る様にerrorを回避出来た後は消してみても問題ありませんでした。
    なんだか狐につままれた気分です。。。
    この様な事もあるんだな、という教訓になりました。ありがとうございます。

    swordoneさん
    メソッドはなかなか扱いが難しいのでありがたいです。
    仰るとおりまだまだ理解出来ておりませんでして(汗)

    キャンセル

+3

せっかくEclipseで書いているのですから、エラーメッセージをちゃんと読みましょう。

日本語環境なら、「構文エラーがあります。")" を挿入して Expression を完了してください」というエラーが出ているはずです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+2

System.out.println("末尾の文字" +  msg.substring(msg.length()-1,msg.length()));

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/21 09:20

    コメントありがとうございます。
    こちらが本命のエラーだった様です。

    ベストアンサーは迷ったのですが、より丁寧な説明を頂いた方に送らせて頂きました><
    申し訳ありませんorz

    キャンセル

+2

最後のカッコが足りないとか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/21 09:15

    本当ですね、)が1つ足りなかったです(汗)
    しかしエラーの根本的原因は他にありました。
    ここで質問するときはなるべく正確な回答が得られるよう最新の注意を払いたいと思います。

    キャンセル

+1

※回答ではありません

エラーメッセージも書いた方がいいと思いますよ。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/21 09:09

    いつも質問の時は書くのですけれど、今回投稿し忘れておりました。
    ご指摘ありがとうございます。
    今後気をつけます。

    キャンセル

0

Javaはもう忘れましたが、

msg.substring(msg.length()-1);

だと、切り取りの最初の位置は指定されていますが、何文字切り出すかの指定がないような…

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/20 19:10

    いいのか、余計なことをいいました。すいません。

    キャンセル

  • 2015/04/20 19:11

    length()は文字数で、カウントは0オリジンだから

    msg.substring(msg.length()-2);

    かな… 多分。

    キャンセル

  • 2015/04/20 19:14

    知らない言語のことは黙っていることにします。すいません。

    キャンセル

関連した質問

  • 受付中

    計算機のプログラム

    初めて質問投稿します。質問に対して不足している情報などあるかもしれませんが、ご容赦ください。 Javaで簡単な計算機の仕組みを作ろうとしています。 しかし、いざコンパイルしようと

  • 解決済

    Java Character.isUpperCase を使わずに表示する。

    質問タイトル通りになるのですが、 こちらのソースをCharacter.isUpperCase を使用せずに表示するやり方がまったく分かりません。 どのように考えたらよろしいでしょう

  • 受付中

    [java][文字列]質問

    indexOfを用いて、特定のワード間を抜きだすような方法はありますでしょうか?? 宜しくお願い致します。

  • 受付中

    String型のメソッド

    型Stringのメソッドを作成したのですが、これをMainクラスで使いたいのですがどうすればよいでしょうか?ちなみにjavaです。 javaのStringクラスのパッケージという

  • 解決済

    JAVAで、substringとequalsの使い方で例外発生

    JAVAで、以下の★の行で、例外が発生します。 原因はなにでしょうか?(例外のメッセージは、nullなので、原因がわかりません)。 try {         String st

  • 解決済

    Javaで文字列の中の特定の文字列を削除したいです。

    Java初心者です。 Javaで、文字列の中で特定の文字列を削除したいのですがやり方がわかりません。 例えば A + B C + D123 E + FFFF など式があるとして

  • 解決済

    ダブルクオーテーションで囲まれた文字を取得する方法

    Javaで ダブルクオーテーション「"」で囲まれた文字列を取得したいのですが、 Webを調べてもよい方法がヒットしませでした。 何かよい方法を知っている方、教えてください

  • 解決済

    javaでスプリットしたもののnull?判定

    タイトルに書いた内容とは具体的に言えば違う部分があるのですが、 現在下記のような状態です。 test  = "123;234;567;" これをスプリットして、

同じタグがついた質問を見る

  • Java

    14153questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。