JAVAを2週間前に始めたばかりの初心者です。課題をいくつか解いてるのですが、いきづまってしまいました。
String型の数をいくつか1つの変数で受け取り、その中から一番大きい数をreturnで返します。
流れとしては、例えば変数streamに"1.0 -2.0 7.5 -3.0 0.5"を受け取った場合、数字一つ一つに分解しstrに格納。
ここで数字はString型なのでdouble型に変えて大小の比較をしようと考えたのですが、
import java.util.Scanner;
public class ControlFun {
public double maximInScanner(Scanner stream){
stream = new Scanner(System.in);
String index = stream.nextLine();
StringTokenizer str = new StringTokenizer(index, " "); //strに数字を一つ一つに分解し格納
while(str.hasMoreTokens()) {
double indexDou = Double.parseDouble(str.nextToken()); //indexDouにそれぞれの数字をdouble型に変更して格納
//ここからどうしたらいいかわかりません。比較したい数字(5つ)が全て同じ変数に格納されてるので、それをどうやったら比較して一番大きい数字(この場合7.5)を返せるのでしょうか?
}
}
それとこれのテストメソッドも作りたいのですが、
import static org.junit.Assert.*;
import org.junit.Test;
public class ControlFunTest {
@Test
public void testmaximInScanner(){
ControlFun myFuns = new ControlFun();
Scanner stream = new Scanner("1.0 -2.0 7.5 -3.0 0.5");
assertEquals(7.5, maximInScanner(stream), 1e-12);
}
}
ここでわからないのはmaximInScannerに赤線のエラーがでることです。
maximInScanner(Scanner)が未定義とでるのですが、定義は上でしてると思うのですが・・・。
わたしのやり方は間違ってますでしょうか?どう組めばプログラムは動きますか?宜しくお願いします。
No.2ベストアンサー
- 回答日時:
こんな具合
public static void main(String args[]){
String index = "1.0 -2.0 7.5 -3.0 0.5";
StringTokenizer str = new StringTokenizer(index, " ");
double resultDbl = Double.parseDouble(str.nextToken());
while(str.hasMoreTokens()) {
double compareDbl = Double.parseDouble(str.nextToken());
if (resultDbl < compareDbl ){
resultDbl = compareDbl;
}
}
System.out.println(resultDbl);
}
>ここでわからないのはmaximInScannerに赤線のエラーがでることです。
>maximInScanner(Scanner)が未定義とでるのですが、定義は上でしてると思うのですが・・・。
>わたしのやり方は間違ってますでしょうか?どう組めばプログラムは動きますか?宜しくお願いします。
どうみてもそんなメソッドないです。
public void testmaximInScanner(){ ←これのこと?
引数よく見てください。
この回答への補足
あーなるほど。double resultDbl = Double.parseDouble(str.nextToken());と このように比較する対象を作るということですか。
ありがとうございます!
No.1
- 回答日時:
上: 普通は「既にみた要素の中での最大値」を覚えておく変数を作ります. 今は文字列から値を取り出していますが, ここまでしないで「double の配列の中から最大値を見つける」ことはできますか?
下: 定義しているのは testmaximInScanner では?
この回答への補足
早速の回答ありがとうございます。
下は解決しました。
assertEquals(7.5, myFuns.maximInScanner(stream), 1e-12);
とするべきでしたね。
本体のプログラムですが、つまり
stream = new Scanner(System.in);
double index = stream.nextLine();
こう変えるということでしょうか?Stringにした理由は、"1.0 -2.0 7.5 -3.0 0.5"これらの数字を1つ1つに分解しないと比較できないのでString型でないと分解できないのでは、なんて思ったからです
問題にはString型のフロートの数字をScannerで受け取るみたいなことが書いてあるので・・・
変数がいくつかあってそれぞれの変数の大小を比較するなら簡単なんですが、この場合変数が一つしかなく比較したい数字がすべてその変数に入っているので、どのように比較していいのかがわかりません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java Java 配列<選挙> 4 2023/07/31 15:07
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C# 浮動小数の数値文字列化 1 2022/04/18 15:15
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C++で割り算の結果を昇順に出力するプログラムを作りたいのですが、例えば(double)100000 3 2022/07/15 17:46
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
中カッコ{}だけの記述について
-
プログラミングの問題です。大...
-
System.exit()の値を取得したい
-
Java 最大公約数 gcd
-
Javaの問題集の解答が意味不明です
-
オーバーロードで
-
変数を動的に利用するには?
-
javaで特定の文字列から特定の...
-
うるう年判定
-
Javaでデータベースの内容をGUI...
-
(大至急)JavaでATMもどきを作成
-
インタフェイス実装と抽象クラ...
-
StringクラスのcompareToメソッド
-
クラスの作成 オブジェクトの...
-
コマンドライン引数の*(アフ...
-
【初心者です】javaで平均値を...
-
Javaでlog4jを使ってログ出力を...
-
(長文です。すみません。)rep...
-
元旦からの経過日数を求めたい
-
replaceAllが使えない場合の取...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングの問題です。大...
-
変数を動的に利用するには?
-
中カッコ{}だけの記述について
-
Java プログラム public class ...
-
System.exit()の値を取得したい
-
Javaでlog4jを使ってログ出力を...
-
javaのプログラミングで作るRPG...
-
Socketの接続のタイムアウトを...
-
NoSuchMethodErrorが解決できま...
-
JSP/Servletのパラメータの受け...
-
コンストラクタの引数の中のnew?
-
バッチファイルごしのシステム...
-
Javaで日本語の出力が文字化けする
-
javaのudp通信について
-
日本語が文字コードによっては...
-
(大至急)JavaでATMもどきを作成
-
【java】同ディレクトリ別ファ...
-
javaで特定の文字列から特定の...
-
(1)を表示するには
-
Processing :指定フォルダ内の...
おすすめ情報