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

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

新規登録して質問してみよう
ただいま回答率
86.02%
Java

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

Q&A

受付中

変数の作成に関して。

kickstart
kickstart

総合スコア0

Java

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

3回答

0グッド

0クリップ

367閲覧

投稿2022/12/05 04:36

前提

入力された文字(キーボードではない)を逆さ文字にするプログラム
例)
11すできんていいはうょき 
が出力された時
きょうはいいてんきです
と表示する。
*11は文の文字数
を作成しているのですが、
途中のString[] strlist = *
*に入れる物が理解できずにいます。
現在はプリントアウトまでは行っていません。途中の文字を認識させるところで躓いています。
どう検索すれば良いのかもわからず、八方塞がりの状況です。
お手数ですが お力添えのほどよろしくお願いいたします。

実現したいこと

String[] strlist = *
*何を入れるのかが理解したい。

発生している問題・エラーメッセージ

Main.java:10: error: illegal start of expression String[] strlist = ;//ここの部分 ^ 1 error

該当のソースコード

java

1import java.util.*; 2 3public class Main { 4 public static void main(String args[] ) throws Exception { 5 6 Scanner sc = new Scanner(System.in); 7 String s = sc.next(); 8 Integer m =Integer.valueOf(s); 9 String[] strlist = ;//ここの部分 10 for(int i = 0; i < m ; i++){ 11 12 strlist[i] = sc.next(); 13 } 14 15 } 16}

試したこと

for文・変数作成 の検索

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

以下のような質問にはグッドを送りましょう

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

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

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

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

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

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

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

適切な質問に修正を依頼しましょう。

2022/12/05 06:10

こちらの質問が複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

episteme

2022/12/05 04:46

> String[] strlist これは文字列の配列ですね。 あなたが欲するのは(文字列ではなく)文字の配列ではありませんか?
jimbe

2022/12/05 05:46 編集

引っ掛かっている箇所より前に、まず最初の s=sc.next() で s に何が入るのか、 次の m=Integer.valueOf(s) で何が起きるかを確認しては如何でしょうか。 (こうなると思いますとかでは無く、分からない部分は一旦コメント化する等して s や m を表示する処理を入れて実際に動かして見るということです。)
kickstart

2022/12/05 05:53

sには最初の文字数でmはfor文で文字数を使うためにintegerで数字に変更してfor文の動かしていることまでは理解できています、ただ何故か上記の点が理解できないのです。
episteme

2022/12/05 05:58

↑「上記の点」ってなんですか?
jimbe

2022/12/05 06:00 編集

穴埋めの課題が分からないという状況なら、逆に(?) 自由にとにかくその仕様のプログラムを作れという課題だったらどのようなコードにしますか。そこから本件の形に落としこむというやり方もあると思います。
dodox86

2022/12/05 06:05

@質問者kickstartさん 質問の発端が少々謎なのですが、これは穴埋め式の課題、問題なのでしょうか。String[] とのように配列でやってやれないことは無いけど、前後のコードを考えるととても不自然ですし、ちゃんと動くようにするには大分修正が必要です。あと、入力形式として "11すできんていいはうょき" のようだと、Integer m =Integer.valueOf(s)で確実にエラー(例外)が起きますよ。 このような問題であれば多くの場合、 "11<改行>すできんていいはうょき" とか "11 すできんていいはうょき" のように空白文字で区切りがあります。
dodox86

2022/12/05 06:48

もしかすると現状のコードは、ネットなどから似たような問題で使えそうに思ったコードを切り貼りして作ったものでしょうかね。その中にString[] hoge のようなものがあったので、理解できずにいるとか。 "11すできんていいはうょき"のように数字部分との区切りのない入力形式でも頑張ってそういうコードを作ればもちろん対応できますが、区切りがあるものよりは面倒で難しくなります。

回答3

0

// ここの部分

配列の初期化です。mに格納された整数のサイズで文字列の配列を初期化してください。

プログラムの構造

このScannerの使い方だと入力(enterキーを押下)は2回(以上)になります。

bash

111 2すできんていいはうょき

ここで「11」はnext()で一度に読み、「すできんていいはうょき」はnext()で1文字ずつ文字列として読み込むので、Scannerの区切り文字を無理矢理変更します。

Java

1 public static void main(String args[] ) throws Exception { 2 Scanner sc = new Scanner(System.in); 3 String s = sc.next(); 4 Integer m =Integer.valueOf(s); 5 String[] strlist = new String[m]; //ここの部分 6 sc = sc.useDelimiter(""); // 区切り文字を空文字列に設定 7 sc.next(); // 先頭を読みとばす 8 for(int i = 0; i < m ; i++){ 9 strlist[m-1-i] = sc.next(); 10 } 11 //System.out.println(Arrays.toString(strlist)); 12 System.out.println(String.join("", strlist)); 13 }

こんなことをしてもプログラミング能力が身に付くわけではありません。まず基本的な配列の操作や文字列の扱いを学びましょう。

投稿2022/12/05 10:36

xebme

総合スコア976

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

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

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

このような回答には修正を依頼しましょう。

0

「Javaの配列の初期化」について調べてみてください。

投稿2022/12/05 08:45

mather

総合スコア6735

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

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

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

このような回答には修正を依頼しましょう。

0

コレ↓じゃダメですか?

Java

1public class foo { 2 3 /* strを反転した文字列を返す */ 4 static String reverse(String str) { 5 char[] chars = str.toCharArray(); 6 int head = 0; 7 int tail = chars.length; 8 while ( head < tail ) { 9 char ch = chars[head]; 10 chars[head++] = chars[--tail]; 11 chars[tail] = ch; 12 } 13 return new String(chars); 14 } 15 16 /* できたかな? */ 17 public static void main(String[] args) { 18 String str = "すできんていいはうょき"; 19 System.out.println(reverse(str)); 20 } 21 22}

投稿2022/12/05 07:07

episteme

総合スコア16007

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

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

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

このような回答には修正を依頼しましょう。

2022/12/05 07:18

こちらの回答が他のユーザーから「説明が不足している回答」という指摘を受けました。

回答へのコメント

jimbe

2022/12/05 07:19

回答になっていないような、説明が不足しているような…感じがします。
episteme

2022/12/05 07:27

入力がわからんのか、反転がわからんのか ですかね。 後者について回答しました。
jimbe

2022/12/05 13:11

ご本人も何が何で分からないのか分からないみたいな感じですし、一問一答ではコードは出せても理解まではどうか…という所でしょうか。

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

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

Java

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