前提・実現したいこと
お忙しいところ、申し訳ありません。
Javaを勉強中の初心者です。
キーボードより文字列を入力し、入力した文字列の文字を1文字ずつ配列に格納。(配列は可変長なものとします)
キーボードから「置き換え対象」と「置き換えたい文字」を入力してもらい、(できれば1文字から可変長まで対応したい)
最初の配列の中から「置き換え対象」の文字を探して、「置き換えたい文字」に置換するプログラムを作っています。
最終目標はこんな感じで表示させたいです。
文字列を入力してください
HELLO
置換する文字を入力してください
L
置換後の文字を入力してください
O
配列の中身の表示:HELLO
置換後の中身の表示:HEOOO
発生している問題・エラーメッセージ
最後の配列から対象を探して置換するところで、つまずいています。
1文字ずつ配列に格納するためchar型で格納して、配列の中身だけString型に変換して比べた方がいいんでしょうか・・・。
cherからStringに変換するには String.valueOfを使えばよさそうなので、
ばらばらにして格納するところで戻そうと試みて、うまく型変更出来てません。
なので、探索段階で型違いのエラーが出てしまい、うまくif文につなげられなくて、
もだえ苦しんでいます。
32行目で「この行に複数マーカーがあります。非互変オペランド型charとString。iを変数に解決できません」
該当のソースコード
import java.util.Scanner;
public class mondai1 {
public static void main(String[] args) { System.out.println("文字列を入力してください"); //キーボードより文字列を入力 Scanner sc = new Scanner(System.in); //中身を代入する(切り出しする文字列) String text = sc.nextLine(); //代入した文字数の分だけ配列を作る char[] work =new char[text.length()]; //一文字ずつ配列に値を代入する for(int i = 0; i < text.length(); i++) { work[i] = text.charAt(i); //char型をString型に直す(これでいいのかな・・・中身の型が変わらない。) //(添え字が変ってるとか!) String.valueOf(i); } //キーボードから置き換え対象文字の入力 System.out.println("置換する文字を入力してください"); String input = new Scanner(System.in).nextLine(); //キーボードから置換した後の文字を入力 System.out.println("置換後の文字を入力してください"); String output = new Scanner(System.in).nextLine(); //その文字に置き換える。(わからない・・・) if (work[i] == input) { /*やりたいこと 配列workの中身とinputを比べて、 同じなら、outputに上書きするみたいな感じで書きたいけど出来ない・・・ (助けて・・・) */ } }
}
試したこと
キーボードから入力したString型の文字列をChar型に変換できないか試すが、
式を入力してもうまく変換できないようだった(同じエラーが出る)多分知識不足。
配列workの中身をchar型からString型に変換できないか試す。
配列の添え字か番地あたりが変換されているのか中身が変わっていない感じがする。
入力された「置き換え対象」と「置き換えたい文字」を配列にして比べるのを試す。
入力された文字をバラバラにキャラ型の配列に入れるまではなんとかできた。
(配列の中身同士を比べて交換するif文を思いつけなかったため断念)
if文で配列の中身と入力された「置き換え対象」「置き換えたい文字」を比べようと必死になる。
(調べたけれどうまくできるものが発見できず断念)
補足情報(FW/ツールのバージョンなど)
java 16を使ってます。
エディタはエクリプス最新バージョンです。
自分で解決しようと踏ん張ったのですが、出来ませんでした。
どなたか、お知恵をお持ちの方、いらっしゃいましたら、どうかお願いいたします。
回答4件
あなたの回答
tips
プレビュー