プロが教えるわが家の防犯対策術!

今晩は!またまたこの掲示板にきました。よろしくお願いします。

文字列かブランクを取り出すコードを書きましたが、
--------
char ch_check = str.charAt(i+1) ;
if(ch_check ==" ") {
---------
のところでString型とchar型の混合は受け入れられませんのようなエラーが出ました。
if(ch_check ==" "をboolean型でうけるのも拒否されました。
どこをどのようにしてやればよいでしょうか。
JAVA初心者です、特に文字列の取り扱いは評判通りわかり難くくないています。
よろしくお願いします。
----------
public class Mojiretu_Blank {

public static void main(String[] args) {

String str = "This is a pen.";
int i = 1 ;
int blank_count = 0 ;
while( i < (str.length()+1) ) {

char ch_check = str.charAt(i+1) ;

if(ch_check ==" ") {

blank_count ++ ;
System.out.println(ch_check);
}
else{}
System.out.print("ブランクの数は" + blank_count + "個です。");
}
}
}

A 回答 (5件)

開発環境が一緒ならば、おそらく自宅と会社のコードが違うのだと思います。


これまでの他の方々の回答でStringとCharの問題は間違いなく解決していると思いますので、質問にあったコードで気になった点を挙げます。

* 質問にあるコードでは無限ループになってしまいます。while の条件判断で使われるiがカウントアップされていません。
* マジックナンバーが多数あり、それらはその場しのぎで付けられています。またほとんどを取り除けます。

以下に直したコードを挙げます。
プログラムは書いて直して何ぼです。また、人の書いたプログラムを読むのも大切です。
Javaの勉強頑張って下さい。

public static void main(String[] args) {
String str = "This is a pen.";
int i = 0 ;
int blank_count = 0 ;
while(i < str.length()) {
char ch_check = str.charAt(i++);
if(ch_check == ' ') {
blank_count++ ;
System.out.println(ch_check);
}
else{}
}
System.out.print("ブランクの数は" + blank_count + "個です。");
}
    • good
    • 0
この回答へのお礼

luckymakoさん有難うございました、何とか解決いたしました。
色々と有難うございました。

お礼日時:2007/06/08 00:45

No3です。



>会社のPCでは相変わらず、エラー表示になります。

家と会社で書いたコードは全く同じですか?
また、エラーは以前のものと同じですか?
全く同じプログラムを書いて、エラーが出たり出なかったり、というのは本来ないはずです。
※絶対ないわけではないですが、原因はJavaVMのバージョンや外部ファイルによるもので、
今回のコードを見てる限り、そのような感じはなさそうです。


>他にString型からChar型への変換方法はないのでしょうか。

StringクラスにはtoCharArray()メソッドがあり、char型の配列に変換することができます。
char型の配列にして、lengthを使うと配列長、つまりもとの文字数が確認できるので、
これで元の文字が何文字だったかを確認できます。
    • good
    • 0

>シングルクオォトでも「文字定数が無効です」とエラー表示になります。



シングルクォート内に2文字以上入っていないですか?
Javaではシングルクォートで囲んだchar型文字(文字リテラル)は
1文字でないといけない決まりがあるようです。
'ab' //こういうのはダメ
'a' //1文字で指定する必要あり
※エスケープシーケンスなど例外もあります。
2文字以上指定していると、コメントにあったようなエラーが出るようです。

あと、おまけ。
質問にあったコードの場合、変数iがいつまでも1のままなので、
whileで無限ループになります。
forを使った方が書きやすいと思いますよ。
    • good
    • 0
この回答へのお礼

neko_nokoさん、有難う御座いました。
しかし、家のPC(Eclipse)では何とか動きましたが、会社のPCでは相変わらず、エラー表示になります。
これはどういう意味でしょうか、それほど微妙な使用方法(書き方)でしょうか。
他にString型からChar型への変換方法はないのでしょうか。
よろしくお願いします。

お礼日時:2007/06/01 17:58

ダブルクォート「""」で括るとString型とみなされます。


char型として扱うにはシングルクォート「''」で括って下さい。

if(ch_check == ' ')
    • good
    • 0
この回答へのお礼

皆さんに色々とレスをつけて頂いていますが
シングルクオォトでも「文字定数が無効です」とエラー表示になります。
JAVAではシングルクォトはどのような場合に使うのでしょうか。
____________________________
>if(ch_check == ' ')

お礼日時:2007/05/29 22:05

>if(ch_check ==" ") {


この" "がStringなので' 'で出来るはず。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!