前提
入力された文字(キーボードではない)を逆さ文字にするプログラム
例)
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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
> String[] strlist
これは文字列の配列ですね。
あなたが欲するのは(文字列ではなく)文字の配列ではありませんか?
引っ掛かっている箇所より前に、まず最初の s=sc.next() で s に何が入るのか、 次の m=Integer.valueOf(s) で何が起きるかを確認しては如何でしょうか。
(こうなると思いますとかでは無く、分からない部分は一旦コメント化する等して s や m を表示する処理を入れて実際に動かして見るということです。)
sには最初の文字数でmはfor文で文字数を使うためにintegerで数字に変更してfor文の動かしていることまでは理解できています、ただ何故か上記の点が理解できないのです。
↑「上記の点」ってなんですか?
穴埋めの課題が分からないという状況なら、逆に(?) 自由にとにかくその仕様のプログラムを作れという課題だったらどのようなコードにしますか。そこから本件の形に落としこむというやり方もあると思います。
@質問者kickstartさん
質問の発端が少々謎なのですが、これは穴埋め式の課題、問題なのでしょうか。String[] とのように配列でやってやれないことは無いけど、前後のコードを考えるととても不自然ですし、ちゃんと動くようにするには大分修正が必要です。あと、入力形式として "11すできんていいはうょき" のようだと、Integer m =Integer.valueOf(s)で確実にエラー(例外)が起きますよ。
このような問題であれば多くの場合、
"11<改行>すできんていいはうょき"
とか
"11 すできんていいはうょき"
のように空白文字で区切りがあります。
もしかすると現状のコードは、ネットなどから似たような問題で使えそうに思ったコードを切り貼りして作ったものでしょうかね。その中にString[] hoge のようなものがあったので、理解できずにいるとか。
"11すできんていいはうょき"のように数字部分との区切りのない入力形式でも頑張ってそういうコードを作ればもちろん対応できますが、区切りがあるものよりは面倒で難しくなります。