Javaのプログラミングで質問です。

AAAA*BBBBBB*CCCCCC・・・
AAA*BB*CCCC
というテキストファイルを読み込むときに、
AAAAを配列1、BBBBBBを配列2にCCCを配列3に入れる、
ということをしようと考えています。

「*があらわれるまで一文字ずつ読んで配列に入れる」
ということをしようとしてwhileでまわそうとしているのですが、whileの条件のところで、
String line;
while (line = reader.read() != *) {

としてみたのですが、!= *の部分が無効だと言われてしまいました。*を文字列として認識させる方法があれば教えていただけないでしょうか?

もし駄目なら駄目で、その他の方法を一から考えようと思いますので「無理だよ」ということだけ教えていただけるとありがたいです。よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

失礼!判定条件が逆でしたね。



while (!(line = reader.read()).equals("*")){

ですね。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
今回は、お礼が遅くなり申し訳ありません。

おかげさまで解決しました。
ありがとうございました。

お礼日時:2001/06/23 16:55

ダブルクォートで囲んで "*" とすれば文字列として認識されます。


なお、文字列の比較はequals()メソッドを使います。
ご質問のケースでは、

while ((line = reader.read()).equals("*")){

とすべきです。
    • good
    • 0

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

このQ&Aと関連する良く見られている質問

QFirefox/2 カーソルが砂時計のまま while(line=str.shift()){

<html>
<head>
<script type="text/javascript">
function init(){
var str="a:b:c".split(/:/);
var line;
while(line=str.shift()){
document.write(line + "<BR>");
}
}
</script>
</head>
<body onload="init()">
</body>
</html>

上記をFirefox/2(Win XP)で実行すると、カーソルが砂時計のまま戻りません。(IE6では再現視せず)

回避策ありましたら教えてください。

Aベストアンサー

document.close();

で閉じてみてください。

Q多次元配列は配列の配列である

Java勉強中なんですが、参考書を読んでいて「多次元配列は、実際には配列の配列である。つまり、2次元配列(array[][])がある場合、実際にはこれをarray[0]、array[1]、array[2]、といった1次元配列に配列として扱う事ができる。」と書いてあり、例題で、

double array[][] = new double[5][];

array[0] = new double[500];
array[0] = new double[400];
array[0] = new double[300];
array[0] = new double[200];
array[0] = new double[100];

と書いてありました。これについてのこれ以上の説明はなく、理解できなくて困っています。ご教授宜しくお願いいたします。

Aベストアンサー

usjさん、こんんちは。
初心者の方には、「配列の配列」といわれても分かりづらいかもしれませんね。
こんな例えはどうでしょう。小学校には当然小学生がいますね。ここで「小学生」という型があります。小学生が数人~数十人で「学級」と固まり(型)となります。つまり「学級」とは「小学生」の1次元配列といえます。
次に「学級」が複数集まって「学年」という固まり(型)となります。つまり、「学年」とは「学級」の1次元配列であり、「小学生」の2次元配列と言えます。
同様に考えると「小学校」という固まり(型)は「学年」の1次元配列であり、「学級」の2次元配列であり、「小学生」の3次元配列と言えます。
この考え方でいくと「小学校」は「小学生」の3次元配列ですが、その中間の固まり「学級」、「学年」を1種の型と考えられます。
ここで、1つの「学級」が他の「学級」と「小学生」の人数は「常に同数」とは限りませんね。同様に1つの「学年」が他の「学年」と「学級」の数が一致するとは限りませんね。
Javaの配列に対する概念-「配列の配列」は、まさしくこのことです。つまり、「小学生」3次元配列「小学校」を考える場合、その中間を成す1次元配列「学級」、2次元配列「学年」も型と考えましょう。しかも、それぞれの構成要素数はバラバラになることがありますよ。といった具合です。
 では、多次元配列が「配列の配列」ではないとどうなるのでしょうか。「小学校」が「小学生」の3次元配列であることは一緒です。しかし、その中間「学級」、「学年」は、人間が考える分にはかまわないが、プログラミング言語としては分けて考えませんよ。しかも、それぞれを更生する数、(すべての「学年」の「学級」の数、すべての「学級」の「小学生」の数)は常に一致しますよ、ということです。ある「学年」は2「学級」で済むのに、他の「学年」が5「学級」必要だから、すべての「学年」で「学級」は5つ用意しないさいといっているようなもので、2「学級」ですんだ「学年」は3つ無駄にしていますね。逆に5つ用意しても、新入生が多すぎて6つ以上必要になったら、対応できませんね。これは、ちょっと不便ですね。
 ただ、1「学年」の「学級」の数、1「学級」の「小学生」の数が常に一致するのは、管理する先生方は管理はしやすいでしょうね。そうなんです。逆に、Javaの多次元配列を扱うときは、構成する要素の数が一致するとは限らないことに注意が必要なんです。
まだ勉強したてでは、まだ分からないかもしれませんが、ちょっと複雑なプログラムを構築すると出会う場面ですので、留意してください。

理解を深めてもらえましたでしょうか。

usjさん、こんんちは。
初心者の方には、「配列の配列」といわれても分かりづらいかもしれませんね。
こんな例えはどうでしょう。小学校には当然小学生がいますね。ここで「小学生」という型があります。小学生が数人~数十人で「学級」と固まり(型)となります。つまり「学級」とは「小学生」の1次元配列といえます。
次に「学級」が複数集まって「学年」という固まり(型)となります。つまり、「学年」とは「学級」の1次元配列であり、「小学生」の2次元配列と言えます。
同様に考えると「小学校」とい...続きを読む

Qid=a1 id=a2 id=a3 のようなid="a"+i のlengthを求めたい

id=a1 id=a2 id=a3 のようなid='a'+i のlengthを求めたい
のですが、どのようにするのでしょうか?

Aベストアンサー

たとえばこんな感じでどうでしょう?

<script>
window.onload=function(){
var tags=document.getElementsByTagName("*");
var count=0;
for(var i=0;i<tags.length;i++){
if(tags[i].id.match(/^a[0-9]+$/)) count++;
}
alert(count);
}
</script>

<div id="a1">a1</div>
<div id="a2">a2</div>
<div id="a3">a3</div>
<div id="a100">a100</div>
<div id="b1">b1</div>
<div id="b2">b2</div>
<div>none</div>

Qonmouseover="this.className=をjsファイルにまとめて、指定する場所はid=menu1,2~....かclass=menuで統一したい

<div class="font1 bor1"
onmouseover="this.className=this.className+' bgcol txcol'"
onmouseout="this.className='font1 bor1'">
というものがあったとしてこれを
<div id="menu1・・・2・・・">だけにして
onmouseover=~をjsに略記できるようにしたいのですが
何かいい手はありませんか?

idで指定できる版のほかに
classで指定できる版があるとうれしいです。classだと難しいでしょうか?

また、こちらももしできればでいいのですが、this.classNameを
指定IDのclassName等もできるのでしょうか?

質問に不足があれば答えられる範囲で答えます。よろしくお願いします。

Aベストアンサー

もうひとつ、質問内容を把握できてませんが、
jQueryを使ったサンプルを。中身は
「font1」ってclassを持つ要素のマウスオーバーで
bgcol と txcol の二つのクラスを追加する。
マウスアウトで
bgcol と txcol の二つのクラスを取り除く。
です。

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(function(){

$('.font1').hover(function(){
$(this).addClass("bgcol");
$(this).addClass("txcol");
},function(){
$(this).removeClass("bgcol");
$(this).removeClass("txcol");
});

});
</script>

$('.font1') という部分を $('#font1') と書けば id="font1" の要素に対する設定になります。 

jQueryの解説、入手先等は
http://www.openspc2.org/JavaScript/Ajax/jQuery_study/index.html
とか、参考にしてください。

もうひとつ、質問内容を把握できてませんが、
jQueryを使ったサンプルを。中身は
「font1」ってclassを持つ要素のマウスオーバーで
bgcol と txcol の二つのクラスを追加する。
マウスアウトで
bgcol と txcol の二つのクラスを取り除く。
です。

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(function(){

$('.font1').hover(function(){
$(this).addClass("bgcol");
$(this).addClass("txcol");
},function(){
$(this).removeClass("bgcol");...続きを読む

Q26408023 = A * B を求めたい

Javaで、26408023 = A * B の正の整数A,Bを求めるプログラムを教えてください!
A,Bのうち、どちらかは1ではない、という条件付きです。

for文を使って考えたのですが、何度やっても上手く行きませんでした!
詳しい方、for文を使ったプログラムを教えてください!
お願いしますm(_ _)m

Aベストアンサー

#1のご解答で、初めて求まった3457で割った商をnに
入れて、更にループの中に入るべきではないでしょうか。
今回は7639が素数であったから良いが、素数でない場合ならここで止めては、解がすべて出ないと思う。


人気Q&Aランキング

おすすめ情報