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

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

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

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

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

Q&A

解決済

3回答

3533閲覧

コマンドラインに一度に入力した文字(空白開けて)の先頭の文字だけ取り出す

modonokouki

総合スコア26

Java

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

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

0グッド

1クリップ

投稿2016/02/13 11:16

java

1import java.io.BufferedReader; 2import java.io.InputStreamReader; 3 4public class Main { 5 public static void main(String[] args) throws Exception { 6 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 7 String line = br.readLine(); 8 line = line.trim(); 9 String [] readLineArray = line.split(" ",1); 10 readLineArray = new String[2]; 11 char m = readLineArray[0].charAt(1); 12 char k = reaaLineArray[1].charAt(1); 13 System.out.println(m+','+k); 14 } 15}
Main.java:12: error: cannot find symbol char k = reaaLineArray[1].charAt(1); ^ symbol: variable reaaLineArray location: class Main 1 error

自分のイメージでは
①標準入力読み込み
②先頭か最後の空白を取り除く
③文字列の配列を宣言後そこに代入するが、trim()メソッドを使って空白を開けたとこで一旦文字列を代入するのをやめて次の配列に空白を開けてコマンドラインに書き込んだ文字を代入
④先頭文字をchar型の箱に取り込む
⑤出力

というイメージなのですがどうでしょうか?

ちなみにエラーのとこをコメントにしてreadLineArray[0]だけ出力させると
149と出ましたがどうしてかいまいちなっとこ出来てないです。

もし良かったら自分の脳内の手順の訂正をよろしうお願いします

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

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

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

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

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

kozuchi

2016/02/13 11:22

取あえず、エラーの文面をよく読んで、意味が理解できないか試みてください。 英語とはいえ、エラーメッセージに書かれていることそのままを回答として書くのは気が引けます。
modonokouki

2016/02/13 11:34

シンボルが見つからないというエラーだと思うのですが、うえで 文字列型の配列を宣言したので問題が起こらないはずだと思ったのですがどうでしょうか?
kozuchi

2016/02/13 12:12

このエラーメッセージの「シンボル(symbol)」とは 「Main.java:12」の行の何を指しているかわかりますか?
guest

回答3

0

ベストアンサー

  • 「char k = reaaLineArray[1].charAt(1);」のreaaLineArrayは打ち間違いです
  • ②先頭「と」最後の空白を取り除く、です
  • ③trim()ではなくsplitメソッドです。また、現在splitの第2引数limit = 1としているので、
    • lineのみを含む長さ1の配列を返します(つまり意図通りではないです)。
  • readLineArray = new String[2]で結果が消えています。
  • charAt(1)は2文字目を返します。
    • 例: "abc".charAt(1) == 'b'
  • 149は、結果の文字コードの和です。
  • readLineなどがIOExceptionを投げる可能性があるのでthrows java.io.IOExceptionを宣言する必要があります。

下のようなことがしたかったのでしょうか。

java

1 public static void main(String []args) throws java.io.IOException { 2 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 3 String line = br.readLine(); 4 line = line.trim(); 5 String [] readLineArray = line.split(" ",2); 6 char m = readLineArray[0].charAt(0); 7 char k = readLineArray[1].charAt(0); 8 System.out.println(m+","+k); 9}

投稿2016/02/14 00:41

ikeyan

総合スコア136

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

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

ikeyan

2016/02/14 00:47

EclipseとかIntellij IDEAなどのIDEを使ったほうが捗ると思いますよ 少なくとも質問する前に文法エラーは直せると思います
modonokouki

2016/02/14 09:01

ありがとうございます! Eclipseも使っているのですが、ロードが出来なかったり、シンボルが見つからなかったり、環境変数の設定がうまく行かなかったりでなかなかはかどっていません... とりあえず早くなれるように頑張ります!
guest

0

仕様の確認ですが、ab cd ef と入力された場合
a,c,e と出力するイメージですかね?
以下のような感じでどうでしょう?

Java

1BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 2// ここでは、必ず空白区切りの文字が入ることを前提とします。 3// それ以外の文字を入れるとエラーとなります。 4String line = br.readLine(); 5String result = Stream.of(line.split(" ")).map(s -> s.substring(0, 1)).collect(Collectors.joining(",")); 6System.out.println(result);

投稿2016/02/13 11:38

root_jp

総合スコア4666

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

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

modonokouki

2016/02/13 11:46

Main.java:9: error: cannot find symbol String result = Stream.of(line.split(" ")).map(s -> s.substring(0, 1)).collect(Collectors.joining(",")); ^ symbol: variable Collectors location: class Main Main.java:9: error: cannot find symbol String result = Stream.of(line.split(" ")).map(s -> s.substring(0, 1)).collect(Collectors.joining(",")); ^ symbol: variable Stream location: class Main 2 errors エラーが出てしまったので import java.io.*にして見たのですがそれでもダメでした...
modonokouki

2016/02/13 11:46

はい、root_jp様が考えてる通りで大丈夫です!
root_jp

2016/02/13 11:55 編集

Java8以上でしか動かないのですが、使用されているJavaのバージョンが7以下ですかね? 書きなおしてみました。 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // ここでは、必ず空白区切りの文字が入ることを前提とします。 // それ以外の文字を入れるとエラーとなります。 String line = br.readLine().trim(); String[] strings = line.split(" "); StrBuilder builder = new StrBuilder(); for (int i = 0; i < strings.length; i++) { builder.append(strings[i].charAt(0)); if (i < strings.length - 1) { builder.append(","); } } System.out.println(builder);
guest

0

まず、reaaLineArray ではなくreadLineArray なのでしょう。スペル間違ってます。

投稿2016/02/13 11:25

root_jp

総合スコア4666

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

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

modonokouki

2016/02/13 11:34

とりあえず直したのですがそれでも治りませんでした...
root_jp

2016/02/13 11:46 編集

他にも色々問題があります。 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // ab cd ef と入力したとする String line = br.readLine(); line = line.trim(); // splitの第2引数は不要です。これだとreadLineArrayのlengthは常に1になります。 // readLineArray[0] に "ab cd ef" が入ってくる。この時点でアウト。 // splitの第2引数に1が指定されているため、[1]とか[2]はとれません。 String [] readLineArray = line.split(" ",1); // 上でsplitの結果を取得した変数に新しいインスタンスを代入しています。 // 新しくなったので readLineArrayは、[0] = null, [1] == null という状態。 readLineArray = new String[2]; // readLineArray[0] は null なので、NullPointerです。 char m = readLineArray[0].charAt(1); // readLineArray[1] は null なので、NullPointerです。 char k = readLineArray[1].charAt(1); System.out.println(m+','+k);
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問