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

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

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

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

Q&A

3回答

713閲覧

変数の作成に関して。

kickstart

総合スコア0

Java

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

0グッド

0クリップ

投稿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/ツールのバージョンなど)

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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すできんていいはうょき"のように数字部分との区切りのない入力形式でも頑張ってそういうコードを作ればもちろん対応できますが、区切りがあるものよりは面倒で難しくなります。
guest

回答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

総合スコア1083

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

投稿2022/12/05 08:45

mather

総合スコア6753

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2022/12/05 07:19

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

2022/12/05 07:27

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

2022/12/05 13:11

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問