■掲示板に戻る■
全部
1-
101-
201-
301-
401-
501-
601-
最新50
JAVA神様 かざっさま
- 1 :アヌス : 2009/01/27 18:37
- 投稿できなくなってしまったので、新しいスレッドにもう一度貼りますです。
何文字かのstringを受け取ってその文字列の真ん中2文字だけをreturnで返したいのです。文字が奇数の場合は右よりの2文字です。
例)
middleTwo("abcd") → "bc"
middleTwo("abcde") → "bc"
文字列は必ず2文字以上あると前提しますです。
それともう一つ。取得した数字が奇数ならfalse偶数ならtrueを返すプログラムです。
例)
isEven (24) → true
isEven (25) → false
どうやらこれは、2つのメソッド(真ん中の文字プログラムと、奇数偶数プログラム)をクラスTwoMethodsに書いて、
それぞれのメソッドに、テストメソッドをクラスTwoMethodsTestに書く、というものらしいのですが、プログラムを貼ります。
しかいしくつか抜けてるところがあってそれをコンプリートしなきゃいけないみたいです。
このクラスは、Stringsといくつかの基本となるタイプを処理するメソッドをテストするための2つのメソッドのテストが記されている(日本語がおかしい・・・汗)
import static org.junit.Assert.*;
import org.junit.Test;
public class TwoMethodsTest {
@Test
public void testMiddleTwo() {
//ここにTwoMethodsオブジェクトが要ります//
TwoMethods myFuns = new TwoMethods();
//middleTwoメソッドをテストするための4つのケース//
assertEquals("bc", myFuns.middleTwo("abcd"));
assertEquals("bc", myFuns.middleTwo("abcde"));
assertEquals("23", myFuns.middleTwo("12345"));
assertEquals("pu", myFuns.middleTwo("Computers"));
assertEquals("to", myFuns.middleTwo("to"));
assertEquals("is", myFuns.middleTwo("antidisestablishmentarianism"));
}
//もう一つのテストメソッドを以下に
}
ここからテストされるメソッドのクラス
public class TwoMethods {
public String middleTwo(String arg) {
return "TBA"; //ここのメソッドを変えなければならないようです。
}
//もうちょっといくつかのメソッドを以下に
}
おそらくエラーが出るそうです。JUnit 4はbuild pathにないからだとか。だからJUnit 4をbuild pathに加えないといかんとかなんとか・・・
JUnit testとして実行する。でもassertionはパスしない(赤いバーになる)。
だからTwoMethods.middleTwo(String)を修正する必要があると・・・
次は奇数か偶数かのメソッド。テストメソッドはTwoMethodsTest.javaへ、isEvenメソッドはTwoMethods.javaへ。そして新しいTwoMethodsを作る必要があります。
public boolean isEven(int number)
@Test
public void testIsEven() {
TwoMethods myFuns = new TwoMethods();
assertTrue(myFuns.isEven(24));
//ここにあといくつかassertionを加えたいのです。
assertFalse(myFuns.isEven(25));
みたいな感じでいいのかな。多分他のケースも加えないといかんのかな。
}
自分でも書いてて理解できん・・・。かざっさん、この意味わかる・・・?
- 2 :大和 : 2009/01/27 18:55
- 1000までいかないなんてひさしぶりだなあ
スレたてどうもです!
- 3 :大和 : 2009/01/27 19:02
- 真ん中の2文字を切り取るプログラムは,
length() メソッドを使いそうだなあ。
奇数ならfalse偶数ならtrueを返すプログラムは,
単純に計算処理をすれば良さそうかな!
ちょっと夕ご飯食べてくるね。
19時40分まで待ってねごめんね。
- 4 :アヌス : 2009/01/27 19:16
- そうなんだよね。length()で文字数はかって2で割ったところの2文字を返せばいいだけだよね。
理解できないところは、テストメソッドとか、テストメソッドはTwoMethodsTest.javaへ行ってisEvenメソッドはTwoMethods.javaへ行くってのがサッパリです
テストされるメソッドのクラスに、length()を使った処理をするんだろうけど、ならテストメソッドって一体・・・?
普通に全部一緒にかけばいいと思うのになんでいちいちテストメソッドとかなんとか・・・と頭がこんがらがってしまっています・・・
上のソースが理解できない・・・
- 5 :大和 : 2009/01/27 19:59
- テストメソッドはね!
本当にただ単に結果がちゃんと正しい結果が出るか,
テストしてるだけなんだ。
つまり,
テストメソッドがなくても,
プログラム2つとも動作します!
テストメソッドはプログラムのコードが完成したら,
あとでつけ足して,で動作確認するためのコードなんです。
テストメソッドがあろうとなかろうと,プログラムは動作するんですね。
だから今は,
// 現段階では不要なコードのため,コメントアウト。
// import static org.junit.Assert.*;
// import org.junit.Test;
//
// public class TwoMethodsTest {
//
// // isTwo() のコード書き終わるまで,こいつはお預け。
// @Test
// public class testMiddleTwo {}
// // isEven() のコード書き終わるまで,こいつはお預け。
// @Test
// public void testIsEven() {}
public class TwoMethods {
public String middleTwo(String arg) {
return "TBA"; // ここのメソッドを変えなければならないようです。→大和:了解。
}
public boolean isEven(int number) {
return; // true か false を返せばいいね。
}
}
まず土台はこんな感じかな!
- 6 :大和 : 2009/01/27 20:48
- あ なんか土台だけ作っちゃえばもうみさきっさんできそうな予感が(’’
一応もうちょっと書いてみるね。
真ん中の2文字を切り取るプログラム
1. 引数で取得した String 型変数「arg(仮に「abcdef」とする)」の,真ん中2文字(「cd」)を取得する。
1.1. 「1.」で取得した値を length() で文字数(「6」)を調べる。
1.2. 文字数を 2 で割り,商を求める(結果は 3)。
1.3. 「1.」で取得した値に,substring(「2.2. で求めた値 - 1」, 「2.2. で求めた値」) する。
→この場合,「"abcdef".substring((3 - 1), 3)」と同義。
2. 「1.3.」で取得した値を return する。
奇数ならfalse偶数ならtrueを返すプログラム
1. 引数で取得した int 型変数「number」,奇数か偶数か判断する。
1.1. 「1.」で取得した値を 2 で割り,余りを求める。
1.2. 余りが 0 なら true に,1 なら false とする。
2. 「1.2.」で取得した値を return する。
- 7 :アヌス : 2009/01/27 20:33
- いえ、すみません・・・ちょと頭の整理ができてなくて・・・
全体のプログラムではどのようになるんでしょうか・・・
コード書き終わったらテストメソッドを作るのか・・・。多分今回の課題ではやはりテストも作らないといけないのかな。
かざっさん、この場合のテストメソッドの作り方も聞いていいですか?
- 8 :アヌス : 2009/01/27 20:35
- 普通に真ん中の文字を返すとか異数偶数のプログラムを組むってんならすごいシンプルですぐできるんだけど、テストとか新しいのがまざった瞬間 いみわからんくなってしまう・・・
応用きくようにしないとダメだな・・・ショボン
- 9 :大和 : 2009/01/27 21:00
- >>7,8
了解!
テストメソッドとプログラムのメソッドは,完っ璧に切り離して考えていいよ!
つまり,今はテストメソッドの事は,100%忘れちゃってください。
真ん中メソッドと偶奇メソッドの,
2つのメソッドを作る事だけ,考えてくれればいいよ!
真ん中メソッドと偶奇メソッドを完成させるまで,
テストメソッドは ま っ た く 関与してきません。
作ったあとにはじめて関与します。
これは作ったあとに,その意味がわかるはず^ω^。
なので今は,
「@Test ってなに・・・?」
「TwoMethods myFuns = new TwoMethods() ってなに・・・?」
「assertEquals("bc", myFuns.middleTwo("abcd")) ってなに・・・?」
とか,一切考えなくて大丈夫!
テストメソッドに関係する全ての事柄を,今は一切考えずに作ってくれて大丈夫だよ!
- 10 :大和 : 2009/01/27 21:02
- テストメソッドも作るのが,今回の課題みたいだねー。
コードが出来上がったらテストメソッドを作ってみましょう!
なあに,テストメソッド作りはじめたら,ああこういう事だったのねってすぐわかるはずさ。
まずは,今は2つのプログラム作ってくれて大丈夫だよー。
- 11 :大和 : 2009/01/27 21:07
- よし風呂だ。
みさきっさんコーディング頑張ってみてー(´∀`)。
テストメソッドは100%考えなくてオッケー!
- 12 :ねこみみ : 2009/01/27 22:08
- かざっさんがんばって勉強したなぁ。
早くコンテンツ作ろうぜ!
- 13 :大和 : 2009/01/28 01:18
- ありがとうー。
でもみんなにはまだまだ足元にも及ばんからね!
みんなに感謝しつつもっと精進します!
ゆくゆくは,いや近いうちに他の言語にも手を伸ばしてみないとね!
- 14 :アヌス : 2009/01/28 05:01
- 簡単に作ったけど、これでいいですよね?
public class TwoMethods {
public String middleTwo(String arg) {
int a = arg.length();
int b = a % 2;
String st = str.substring(b-1, a);
return st;
}
public boolean isEven(int number) {
int a = number % 2;
if(a==0)
return True;
else
return False;
}
}
間違ってたら教えてください。
そしてここでテストはどのように作るのでしょうか・・・
- 15 :大和 : 2009/01/28 08:27
-
public class TwoMethods {
public String middleTwo(String arg) {
int a = arg.length();
int b = a % 2;
String st = arg.substring((b - 1), b);
return st;
}
public boolean isEven(int number) {
int a = number % 2;
if (a == 0)
return true;
else
return false;
}
}
細かいとこの指摘ですが,こんな感じかな!
あとは完璧ですね!
- 16 :大和 : 2009/01/28 09:19
-
import static org.junit.Assert.*;
import org.junit.Test;
public class testTwoMethods {
@Test
public void testMiddleTwo() {
TwoMethods myFuns = new TwoMethods();
assertEquals("bc", myFuns.middleTwo("abcd"));
assertEquals("bc", myFuns.middleTwo("abcde"));
assertEquals("23", myFuns.middleTwo("12345"));
assertEquals("pu", myFuns.middleTwo("Computers"));
assertEquals("to", myFuns.middleTwo("to"));
assertEquals("is", myFuns.middleTwo("antidisestablishmentarianism"));
assertEquals("ゃん", myFuns.middleTwo("カトちゃんペッ!"));
@Test
public void testIsEven() {
TwoMethods myFuns = new TwoMethods();
assertTrue(myFuns.isEven(24));
assertTrue(myFuns.isEven(-128));
assertFalse(myFuns.isEven(25));
}
}
これがテストクラスだよー。
実はこれ,「テストクラス」とか「テストメソッド」なんてかっこいい名称がついているけど,
普通のクラスやメソッドと大差ない,ただの「クラス」と「メソッド」なんだ。
「JUnitというテスト動作確認ツール」で動作させるために,
普通の「クラス」をちょっと 改 変 し た だ け のただのクラスなのです。
テストクラスで不明な箇所があったら何なりと聞いてね!
- 17 :大和 : 2009/01/28 09:18
- >>1
> しかいしくつか抜けてるところがあってそれをコンプリートしなきゃいけないみたいです。
>>14のコードで完璧です。
実装メソッドの抜けてるところは,これでコンプリートしましたね!
テストクラスも,みさきっさんが提示してくれたやつ(>>16)で,もうこれでコンプリートです。
もうこれで十分ですが,
まだテストケースを追加したいなら追加してもおk!
> このクラスは、Stringsといくつかの基本となるタイプを処理するメソッドをテストするための2つのメソッドのテストが記されている(日本語がおかしい・・・汗)
大丈夫です。ちゃんと理解できる文章ですよ。
> public class TwoMethods {
> public String middleTwo(String arg) {
> return "TBA"; //ここのメソッドを変えなければならないようです。
> }
もう変え終わりましたね。おつかれさま。
> おそらくエラーが出るそうです。JUnit 4はbuild pathにないからだとか。だからJUnit 4をbuild pathに加えないといかんとかなんとか・・・
> JUnit testとして実行する。でもassertionはパスしない(赤いバーになる)。
> だからTwoMethods.middleTwo(String)を修正する必要があると・・・
>>16ので,再度テストをかけてみてください。
今度は赤いバーが出ないで全部緑のバーになるはずです!
> public boolean isEven(int number)
> @Test
> public void testIsEven() {
> TwoMethods myFuns = new TwoMethods();
> assertTrue(myFuns.isEven(24));
>
> // ここにあといくつかassertionを加えたいのです。
> assertFalse(myFuns.isEven(25));
> みたいな感じでいいのかな。多分他のケースも加えないといかんのかな。
みたいな感じで完璧です!
testIsEven() の目的は,isEven() から return されてくる値が「偶数」か「奇数」かを,調べる事です。
なので,この 24 と 25 だけで完璧だよー。
テストメソッドに関する書き込みは以上です。
みさきっさんさすが。
ここどうなってるの?って箇所があったらどんどんまた聞いてくださいね。
- 18 :アヌス : 2009/01/28 17:53
- 実行の手順ですけど、テストメソッドと本体は一緒に実行するん?それともテストだはテストだけで?
import static org.junit.Assert.*;
import org.junit.Test;
public class testTwoMethods {
@Test
public void testMiddleTwo() {
TwoMethods myFuns = new TwoMethods();
assertEquals("bc", myFuns.middleTwo("abcd"));
assertEquals("bc", myFuns.middleTwo("abcde"));
assertEquals("23", myFuns.middleTwo("12345"));
assertEquals("pu", myFuns.middleTwo("Computers"));
assertEquals("to", myFuns.middleTwo("to"));
assertEquals("is", myFuns.middleTwo("antidisestablishmentarianism"));
assertEquals("ゃん", myFuns.middleTwo("カトちゃんペッ!"));
@Test
public void testIsEven() {
TwoMethods myFuns = new TwoMethods();
assertTrue(myFuns.isEven(24));
assertTrue(myFuns.isEven(-128));
assertFalse(myFuns.isEven(25));
}
}
これだけで実行するのか・・・それとも
import org.junit.Test;
public class testTwoMethods {
@Test
public void testMiddleTwo() {
TwoMethods myFuns = new TwoMethods();
assertEquals("bc", myFuns.middleTwo("abcd"));
assertEquals("bc", myFuns.middleTwo("abcde"));
assertEquals("23", myFuns.middleTwo("12345"));
assertEquals("pu", myFuns.middleTwo("Computers"));
assertEquals("to", myFuns.middleTwo("to"));
assertEquals("is", myFuns.middleTwo("antidisestablishmentarianism"));
assertEquals("ゃん", myFuns.middleTwo("カトちゃんペッ!"));
@Test
public void testIsEven() {
TwoMethods myFuns = new TwoMethods();
assertTrue(myFuns.isEven(24));
assertTrue(myFuns.isEven(-128));
assertFalse(myFuns.isEven(25));
}
}
public class TwoMethods {
public String middleTwo(String arg) {
int a = arg.length();
int b = a % 2;
String st = arg.substring((b - 1), b);
return st;
}
public boolean isEven(int number) {
int a = number % 2;
if (a == 0)
return true;
else
return false;
}
}
こうやって実行するのか・・・それとも本体をテストメソッドに挿入しなきゃいけないとか・・・
本体の
public class TwoMethods {
public String middleTwo(String arg) {
int a = arg.length();
int b = a % 2;
String st = arg.substring((b - 1), b);
return st;
}
public boolean isEven(int number) {
int a = number % 2;
if (a == 0)
return true;
else
return false;
}
}
にはimportとかがないけど・・・
- 19 :アヌス : 2009/01/28 18:37
- ていうか、
public class TwoMethods {
public String middleTwo(String arg) {
int a = arg.length();
int b = a % 2;
String st = arg.substring((b - 1), b);
return st;
}
public boolean isEven(int number) {
int a = number % 2;
if (a == 0)
return true;
else
return false;
}
}
このプログラムではどうやってStringのargの値を取得するん?キーボード入力でもないし、初期化してるわけでもないし・・・
テストメソッドと本体とではnew TwoMethodsってのが共通してるけど、これでargのやりとりしてるん・・・?
テストと本体どうやって組み合わせて実行するかが・・・
- 20 :大和 : 2009/01/28 20:21
- >>7
TwoMethodsTest クラスから,TwoMethods クラスの2つのメソッドを呼び出すんだー。
なので,テストメソッドだけ呼び出せばいいよ!
>>8
>このプログラムではどうやってStringのargの値を取得するん?キーボード入力でもないし、初期化してるわけでもないし・・・
例えばこれ!
TwoMethods myFuns = new TwoMethods();
assertEquals("bc", myFuns.middleTwo("abcd"));
テストクラスから,middleTwo() を呼び出しているよ!
呼び出すと同時に,引数で文字列「abcd」を渡しているね。
で,呼び出された middleTwo() で,渡されてきた引数の値を変数 arg で受け取るんだ。
メソッドを呼び出す: myFuns.middleTwo("abcd");
呼び出されたメソッド: public String middleTwo(String arg) {}
文字列「abcd」が渡され,middleTwo() の引数内で宣言された変数 arg に渡される。
>テストメソッドと本体とではnew TwoMethodsってのが共通してるけど、これでargのやりとりしてるん・・・?
>テストと本体どうやって組み合わせて実行するかが・・・
やりとりしてるのは↓太文字の部分!
TwoMethods myFuns = new TwoMethods();
assertEquals("bc", myFuns.middleTwo("abcd"));
assertEquals("bc", myFuns.middleTwo("abcde"));
assertEquals("23", myFuns.middleTwo("12345"));
assertEquals("pu", myFuns.middleTwo("Computers"));
assertEquals("to", myFuns.middleTwo("to"));
assertEquals("is", myFuns.middleTwo("antidisestablishmentarianism"));
assertEquals("ゃん", myFuns.middleTwo("カトちゃんペッ!"));
今回は,テストメソッドから本体を呼び出します!
いつもは main() メソッド使っていたけどね!
説明よくわからないとこがあったら,遠慮なくどんどん教えてねー。
- 21 :大和 : 2009/01/29 00:43
- おしねよ!
また明日の朝!
- 22 :アヌス : 2009/01/29 01:48
- なるほど!じゃぁ 実行するときは
import static org.junit.Assert.*;
import org.junit.Test;
public class testTwoMethods {
@Test
public void testMiddleTwo() {
TwoMethods myFuns = new TwoMethods();
assertEquals("bc", myFuns.middleTwo("abcd"));
assertEquals("bc", myFuns.middleTwo("abcde"));
assertEquals("23", myFuns.middleTwo("12345"));
assertEquals("pu", myFuns.middleTwo("Computers"));
assertEquals("to", myFuns.middleTwo("to"));
assertEquals("is", myFuns.middleTwo("antidisestablishmentarianism"));
assertEquals("ゃん", myFuns.middleTwo("カトちゃんペッ!"));
@Test
public void testIsEven() {
TwoMethods myFuns = new TwoMethods();
assertTrue(myFuns.isEven(24));
assertTrue(myFuns.isEven(-128));
assertFalse(myFuns.isEven(25));
}
}
public class TwoMethods {
public String middleTwo(String arg) {
int a = arg.length();
int b = a % 2;
String st = arg.substring((b - 1), b);
return st;
}
public boolean isEven(int number) {
int a = number % 2;
if (a == 0)
return true;
else
return false;
}
}
この表記でいいの?
- 23 :anusu : 2009/01/29 05:35
- daigaku kara sitsurei simasu
nihongo utenakute...
test method ha konna kannji desuka
import static org.junit.Assert.*;
import org.junit.Test;
public class TwoMethodTest {
@Test
public void testMiddleTwo() {
TwoMethod myFuns = new TwoMethod();
assertEquals("bc", myFuns.middleTwo("abcd"));
assertEquals("bc", myFuns.middleTwo("abcde"));
assertEquals("23", myFuns.middleTwo("12345"));
assertEquals("pu", myFuns.middleTwo("Computers"));
assertEquals("to", myFuns.middleTwo("to"));
assertEquals("is", myFuns.middleTwo("antidisestablishmentarianism"));
assertEquals("ta", myFuns.middleTwo("mountaindew"));
}
@Test
public void testIsEven() {
TwoMethod myFuns = new TwoMethod();
assertTrue(myFuns.isEven(24));
assertFalse(myFuns.isEven(25));
}
}
de,honntai ha
public class TwoMethod {
public String middleTwo(String arg) {
int a = arg.length();
int b = a / 2;
String st = arg.substring(b-1, b+1);
return st;
}
public boolean isEven(int number) {
int a = number % 2;
if (a == 0)
return true;
else
return false;
}
korede midori ni narimasitayo!
int b = a % 2;
String st = arg.substring((b - 1), b);
kokoga tigaimasita
int b = a / 2;
String st = arg.substring(b - 1, b+1);
korede ugokimashitayo!
aragatou kazassann!
- 24 :大和 : 2009/01/29 07:47
- 10時にレスしますね。
おお動いた?!よかったー!
- 25 :アヌス : 2009/01/29 08:13
- ある時、父さんが家にロボットを連れてきた。
そのロボットは特別で、ウソをついた人の顔をひっぱたくって言う物騒な代物らしい。
そんなある日…。
僕は学校から帰宅するのがかなり遅くなってしまった。
すると父がこう尋ねてきた。
「どうしてこんなに遅くなったんだ?」
僕は答えた。
「今日は学校で補習授業があったんだよ」
すると驚いたことに、ロボットが急に飛び上がり、僕の顔をひっぱたいた。
父は言った。
「いいか、このロボットはウソを感知して、ウソついた者の顔をひっぱたくのさ。さあ、正直に言いなさい」
そして父がもう一度聞いてきた。
「どうして遅くなったんだ?」
僕は本当のことを言うことにした。
「映画を見に行ってたんだ」
父はさらに聞いてきた。
「なんの映画なんだ?」
「十戒だよ」
これに反応して、ロボットがまた僕の顔をひっぱたいた。
「ごめんなさい…父さん。実を言うと『Sexクイーン』ってのを見てたんだ」
「何て低俗な映画を見てるんだ、恥を知れ!いいか、父さんがお前くらいの頃は、そんな映画を見たり態度が悪かったことなんて無かったんだぞ」
するとロボットはきつい一発を父に食らわせた。
それを聞いていた母が、キッチンから顔を覗かせるとこう言った。
「さすが親子ね、あなたの子だけあるわ」
母も顔をひっぱたかれた。
- 26 :アヌス : 2009/01/29 10:02
- ( ゚д゚ )
| | チャリーン
U _ U __lヽ,,lヽ
〉 ) 〉). | |Θ|( )
| ̄ ̄ ̄| ̄ ̄|_ |_|_|と i
|___|__|_| |_| しーJ
∧_∧
.( ゚д゚ )>>1乙
| |
U _ U __lヽ,,lヽ
〉 ) 〉). | |Θ|( )
| ̄ ̄ ̄| ̄ ̄|_ |_|_|と i
|___|__|_| |_| しーJ
∧_∧
( ゚д゚ )
| |
U _ U __lヽ,,lヽ
〉 ) 〉). | |Θ|( ゚д゚ )
| ̄ ̄ ̄| ̄ ̄|_ |_|_|と i
|___|__|_| |_| しーJ
- 27 :大和 : 2009/01/29 12:33
- おおちゃんと出来たんだね!
よかったよかった〜。
またJavaの問題でたら気軽に言うてください!
私もいい経験になるからありがたいです。
- 28 :アヌス : 2009/01/29 13:19
- ..|
|く( )ゝ だ・る・ま・さ・ん・が・
| ( ) こ・ろ・ん・
|_ノ_|____
( )
ノ( )ヽ ( )
ハ ノ( )ヽ
彡 ハ
( ) ミ
ノ( )ヽ
ハ
l.l.l
|
|く(゚д゚) だ
| ( ノ`l
|_ノ_|____
(゚д゚)
ノl L (゚д゚)
ハ ノ )、
ハ
(゚д゚)
( L'
ハ
- 29 :アヌス : 2009/01/29 13:20
- (;´Д`) シコシコシコシコ
_(ヽηノ_
ヽ ヽ
( ゚д゚ ) !
_(ヽっノ_
ヽ ヽ
( ゚д゚ ) シコシコシコシコ
_(ヽηノ_
ヽ ヽ
- 30 :アヌス : 2009/01/29 13:20
- ありがとうございますです!
明日かあさってあたりにまた質問させてください!
- 31 :アヌス : 2009/01/29 19:04
- ____(;゚;;) ∧∧ (;゚;;)
__/ ∧_∧ (;゚;;)(;゚;;)\(´・ω・`)丿
/ //_(´・ω・)(;゚;;)(;゚;;)(;゚;;)\ / みかん食べる〜?
〈 〈※( つ ______ \ おいし〜よ〜♪
\ ~と( ※ ※ ※ ※ ※ ※ヽ\
\ \⌒ ※ ※ ※ ※ ※ ※ ヽ \
\ `ー──o(´・ω・`)o──‐‐' \
ゝ、, ____________〉
- 32 :大和 : 2009/01/29 23:30
- じゃんじゃんどうぞ!
- 33 :大和 : 2009/01/29 23:31
- 眠い!ねるー^q^
- 34 :アヌス : 2009/01/30 19:19
- 文字列で大文字小文字の変化の問題がでてきてしまい困っています。
文字列はやっぱ苦手だなぁ・・・
かざっさん。いくつか例題をのせますのでちょっと見てくれませんか。今回もテストメソッドがいるんだよね。。。
booleanとテストメソッドの作り方もちょっといまいちなのです・・・
0:
public boolean isLeapYear(int year)
うるう年ならtrue、違えばfalseを返します。うるう年は、4年に一度だから4で割り切れるかどうかですが、1世紀の最後の都市はうるう除外します
それと400で割り切れる必要もあります。
2000年はうるう年でも2100年は違います。
例
isLeapYear(2008) return true
isLeapyear(2009) return false
isLeapYear(2100) return false
isLeapYear(2400) return true
今回のプログラム(10個)も前のと同じように一つのクラスControlFunに書き、テストメソッドControlFunTestを作ります
import static org.junit.Assert,*;
import org.junit.Test;
import java.util.Scanner;
pubilc class ControlFunTest{
@Test
public void testIsLeapyear(){
ControlFun myFun = new ControlFun();
assertTrue(myFun, isLeapYear(2008));
assertFalse(myFun, isLeapYear(2009));
assertFalse(myFun, isLeapYear(2100));
assertTrue(myFun, isLeapYear(2400));
}
//残り(9つ)のテストメソッド
}
ここからプログラム本体
import java unit.Scanner;
public class ControlFun{
public boolean isLeapYear(int year){
//ここに足りない部分を補う
return false
}
//残り(9つ)のメソッド
}
- 35 :アヌス : 2009/01/30 18:21
- 1:
文字列を半分に分けて、最初の半分の文字列と後半の文字列と入れ替えます。そしてその後、最初の半分の文字列を全部小文字に、後半の文字列を大文字に変えます。
halfAndHalf("x2y4abcd")→ "abcdX2Y4"
halfAndHalf("AbcDef")→ "defABC"
halfAndHalf("Hello")→ "lloHE"
halfAndHald("U of A")→ "F aU O"
もし文字列が奇数の場合は、Helloの例のように、真ん中の小文字のlを一番始めにもってきます。
public String halfAndHalf(String str)
- 36 :アヌス : 2009/01/30 18:29
- 2:
public String firstOf3Strings(String a, String b, String c)
3つの文字から、一番小さい文字を返します。大文字は小文字より小さく、一番小さいのは”A”です。
例
firstOfStrings("c", "b", "a") return "a"
firstOfStrings("B", "B", "B") return "B"
firstOfStrings("B", "B", "A") return "A"
firstOfStrings("ma", "Ma", "ma") return "Ma"
firstofStrings("a ", "a ", "a") return "a"
テストメソッドはこうなりますよね
@Test
public void testFirstOf3Strings(){
ControlFun myFun = new ControlFun();
assertEquals("First", myFun.firstOf3Strings("Third", "Second", "First"));
//assertをもっと・・・
- 37 :アヌス : 2009/01/30 19:19
- 3:
public String season(int month, boolean inNorthernHemisphere)
もしbooleanがinNorthernHemisphere(北半球)ならTrue。!inNorthernHemisphere(南半球)ならFalse。
その月の四季を返します。
{12月、1月、2月}
北半球→"Winter"
南半球→"Summer"
{3月、4月、5月}
北→"Spring"
南→"Fall"
{6月、7月、8月}
北→"Summer"
南→"Winter"
{9月、10月、11月}
北→"Fall"
南→"Spring"
例
season(12, true) return "Winter"
season(12, false) return "Summer"
season(3, true) return "Spring"
season(3, false) return "Fall"
- 38 :アヌス : 2009/01/30 18:45
- 4:
public int caughtSpeeding(int speed, boolean isBirthday)
車で走っていて、スピードの取締りをしているパトカーがいるとします。
60k以下で走ればキップ=0、61k〜80kで走るとキップ=1、81k以上で走るとキップ=2を切られ、そのキップの値を返します。
ただしもしその日が誕生日(True)なら、5kまでスピードをあげてもOKです
例
caughtSpeeding(60, false) return 0
caughtSpeeding(65, false) return 1
caughtSpeeding(65, true) return 0
- 39 :アヌス : 2009/01/30 18:48
- 5:
public String reverseString(String arg)
ここでは、文字列を逆さまにして返します。
例
reverseString("") return""
reverseString("1") return "1"
reverseString("1234") return "4321"
reverseString("racecar") return "racecar"
- 40 :アヌス : 2009/01/30 19:04
- 6:
public int firstNints(int n)
与えられた数字nまでの数字を1から順に足して結果を返します
例
firstNints(1) return 1
firstNints(2) return 3 (1+2=3)
firstNints(5) return 15 (1+2+3+4+5=15)
これはforループを使います
- 41 :アヌス : 2009/01/30 19:04
- 7:
public int factorial(int n)
6の階乗版です。値の階乗を返します
例
factorial(1) return 1
factorial(2) return 2 (1*2=2)
factorial(3) return 6 (1*2*3=6)
factorial(4) return 24 (1*2*3*4=24)
これもforループを使います
- 42 :アヌス : 2009/01/30 18:58
- 8:
pubilc int sumInScanner(Scanner stream)
キーボードからいくつかの数字(スペース付で)をstreamにうけとり、すべての数字を足し返します。
テストメソッドはこんな感じですかな
@Test
public void sumInScanner(){
Scanner stream = new Scanner("1 2 3");
assertEquals(6, sumInScanner(stream));
}
- 43 :アヌス : 2009/01/30 19:03
- 9:
public double maximInScanner(Scanner stream)
streamにいくつかの数字があり、その中から一番デカい数字を返します。
テストメソッドはこんな感じでしょうか
@Test
public void testMaximInScanner(){
Scanner stream = new Scanner("1.0 -2.0 7.5 -3.0 0.5");
assertEquals(7.5, maximInScanner(stream), 1e-12);
しかし1e-12ってのがよくわかりません・・・汗
- 44 :アヌス : 2009/01/30 19:24
- 文字列などの変化で結構つっかかっていますです。
10個もメソッドつくらないかんのですが、もしわかるものがあれば教えてくださいです。
あとで、またわからないとこの詳細を書くです
- 45 :大和 : 2009/01/30 21:12
- なるほど〜。
処理の流れは大体わかるんだけど,
どんなコード使えば・・・って事だよね多分。
問い10それぞれに使う核のコードを紹介していくね。
23時までにレスするねー。
- 46 :大和 : 2009/01/30 21:20
- 今回もテストクラスは,まず100%忘れておいて,
ホンチャンのクラスだけに集中して,作っていきましょうー。
テストクラス作るのはあとでやりましょう。
慣れてきたらホンチャンクラス作りながらテストクラスも作っていいですよ!
- 47 :大和 : 2009/01/31 10:18
- 問い0:
if (キーボード入力された値 % 400 == 0 || (キーボード入力された値 % 4 == 0 &&
キーボード入力された値 % 100 != 0)) {
return true;
} else {
return false;
}
400で割り切れる値,もしくは
4で割り切れてかつ100で割り切れる値でないなら,
true を return する処理(わかりづらいね・・・)。
条件1:OK! 400 % 400 = 0
条件2:条件判定されず
条件3:条件判定されず
結果:400年は true
条件1:NG! 240 % 400 = 0 じゃない
条件2:OK! 240 % 4 = 0
条件3:OK! 240 % 100 = 0 じゃないからOK!
結果:240年は true
条件1:NG! 1300 % 400 = 0 じゃない
条件2:OK! 1300 % 4 = 0
条件3:NG! 1300 % 100 = 0 なのでNG!
結果:1300年は false
条件1:NG! 3 % 400 = 0 じゃない
条件2:NG! 3 % 4 = 0 じゃない
条件3:条件判定されず
結果:3年は false
こんな感じ!条件判定がややっこしいね・・・。
問い1:
文字列の真ん中のインデックスを求める。
"ABCED".length() → 「5」
5 / 2 → 5文字の真ん中のインデックスの値は 2 である。
文字列を切り取る。
"Kakitama".substring(0, 6) → 「Kakita」
"ABCEDF".substring(3) → 「EDF」
文字列を真ん中で分ける。
"Japan".substring(0, 真ん中のインデックスの値) → 「ja」
"Japan.substring(真ん中のインデックスの値)" → 「pan」
文字を全部小文字に。
"JAVA".toLowerCase() → 「java」
文字を全部大文字に。
"java".toUpperCase() → 「JAVA」
問い2:
この処理はおそらく,Arrays.sort() と compareTo() を使うと思います。
・・・!? 問い2は結構わかりにくいコードになるな!
わかりにくいコード=人に説明しにくいコード。
これはコード全部書いたほうが良いかな。
問い3:
わからない箇所があったらどこの処理でコーディングしづらいか言ってね!
問い4:
これもわからない箇所があったらどこの処理でコーディングしづらいか言ってね!
問い5:
一番最後のインデックスの値を一回一回切り取っていくって繰り返し処理だね。
文字列「ABCD」→D切り取る→変数AにD格納→C切り取る→変数AがDC→B切り取る→みたいな!
これも不明なようだったら言ってね!サンプルコード書くねー。
問い6:
これは大丈夫そうかな!?
問い7:
これも大丈夫そうかな!?
問い8:
これは以前作ったプログラムに似ているね。
それを参考にすれば出来そうかな?
わからない箇所があったら遠慮なく言ってね!
問い9:
「1e-12」ですが,Javaでの指数表記みたいだね!
Java 入門 | 基本データ型のリテラル
http://www.nextindex.net/java/literal.html
↑のサイトによると,1E-12は 1*10^(-12) って事なのかな?
ごめんこれはよくわからないから確証はないです!
このプログラムも問い8に似ているね。
stream にある文字列を数字に分解して,それぞれの数字を比較する,
って処理かな!
これもちょっと処理が長くなりそうかな・・?
わからない箇所があったらまたは全部わからない場合は遠慮なく言ってください!
- 48 :大和 : 2009/01/31 01:37
- よし寝る!
- 49 :アヌス : 2009/01/31 07:57
- ひえーーー
こんがらがってきた
すいません説明が悪かったです。うるう年の問題は、普通4年に一度なので4で割り切れる年なのですが、
世紀末の年だけ計算の仕方を変えるということです。
世紀末は当然100で割り切れないといけないのですが、うるう年は4年に一度なので、4×100ってことで400で割り切れる必要があると。
つまり世紀末のうるう年は400年に一度ってことですね。
だから世紀末の例で、400や800や2000はうるう年。しかし300や100や2100はちがう、ということですな
- 50 :大和 : 2009/01/31 08:17
- \ │ /
ピカッ _ 。 _
Å / 丶 ウェーハハハハ!
ヽ<ヽ`∀´>ノ、 邪悪なるものよ消えろニダ!
/ ( ) \
んヘU Uヽ..〜'
サ----
Å:. ..
ヽ<ヽ`A:: .. . . ウワァァ
/ ( ):... .. .
んヘU Uヽ .. .
- 51 :大和 : 2009/01/31 08:19
- >>49
了解!
- 52 :大和 : 2009/01/31 10:25
- >>47の 問い0 を更新しました!
- 53 :アヌス : 2009/01/31 19:02
- 他のJAVAの課題やってて時間かかった・・・
ようやくこっちに移れるですよ・・・多すぎる・・・
2のプログラム、JAVAで配列まだやってなくてショボーンなんだよね・・・
booleanって頭がいたくなる
うあひゃあああああああああ
- 54 :アヌス : 2009/01/31 20:48
- (゚д゚ ) ≡≡≡
O┬Oc )〜 ≡≡≡
(*)ι_/(*) ≡≡≡
( ゚д゚ ) ! ≡≡≡
O┬Oc )〜 ≡≡≡
(*)ι_/(*) ≡≡≡
( ゚д゚ )
O┬O
( .∩.|
ι| |j::...
∪::::::
- 55 :アヌス : 2009/01/31 20:48
- .. ''';;';';;'';;;,., ドドドドド ・・・
''';;';'';';''';;'';;;,., ドドドドドドドド・・・
;;''';;';'';';';;;'';;'';;;
;;'';';';;'';;';'';';';;;'';;'';;;
vymyvwymyvymyvy、
ヽ(゚д゚)vヽ(゚д゚)yヽ(゚д゚)v(゚д゚)っ
⊂( ゚д゚ ) と( ゚д゚ ) 〃ミ ( ゚д゚ )っ ( ゚д゚ )つ
ゝηミ ( ゚д゚ )っ ミ) ⊂( ゚д゚ ) .(彡η r
しu(彡η r⊂( ゚д゚ ) .ゝ.η.ミ) i_ノ┘
. i_ノ┘ ヽ ηミ)しu
(⌒) .|
三`J
- 56 :アヌス : 2009/01/31 20:50
- ┌─────────────────┐
| ヽ(゚д゚)vヽ(゚д゚)yヽ(゚д゚)v(゚д゚)っ .|
|⊂( ゚д゚ ) と( ゚д゚ ) 〃ミ ( ゚д゚ )っ ( ゚д゚ )つ
.(^ヽ(^Y´゙i'´),-‐、 | ゝηミ ( ゚д゚ )っ ミ) ⊂( ゚д゚ ) .(彡η r'. ..|
(`ーァ'"´ ̄ ̄`゙ヽ<'´| しu(彡η r⊂( ゚д゚ ) .ゝ.η.ミ) i_ノ┘ .!
.,,-‐-.l′ ( ゚д゚ ) ゙i-─、 i_ノ┘ ヽ ηミ)しu |
゙ー-‐,| /( )ヽ |-=ニ. (⌒) |
/ ,二二^7 _ .__/`Zィヽ、 `゙、ー‐--,
/ ,二二"/ ./ / "ァ r┬゙'i、> _,ニ=-< .r-' ̄-ァ
./ ,二二"/ ./ .-、 .|゙ヤ7'ニ、 .゙、.,,-─-.、 .゙-─、 ゙i .7 ,r,=-─ァ
"ァ ,r┐r''__/__,n、゙-' .)ヽ二,-^'1 .(7 ∧ .゙i ,r' _ノ /__/、-ニ゙ー'__
にン /_,ニノ ゙ー-" ゙ー-'´-ン "‐'´ ゙ー二./
∩ (\ /)
⊂ヽ゚д゚ )ヽ ( ゚д゚ )ノ ))) \( ゚д゚ )/ ( ゚д゚ ) ミ
lll ノ( ゚д゚ )ヽ lll `ヽ ヽ' )) ( 二つ | | γ 二つ つ
ミ、_つ とノ彡 ノ ノ ノ 彡ヽ | | { (
(_( ̄)_) し' ⌒J (_ノ ⌒゙J し ⌒J ヽ,_)ヽ,_)
- 57 :大和 : 2009/02/01 12:34
- !?
ごめんー問い2 Arrays.sort() は使わないや!
compareTo() だけだったー使うのは。
ちょっと書いてみよう。
- 58 :アヌス : 2009/02/01 13:16
- ええええええええええええええええええええええええええええ
- 59 :アヌス : 2009/02/01 13:18
- まず0のプログラムから
import java unit.Scanner;
public class ControlFun {
public boolean isLeapYear(int year){
if(year%400==0 || (year%4==0 && !(year%100==0))){
return true;
}else{
return false;
}
}
//残り9つのプログラムをここに・・・
}
- 60 :アヌス : 2009/02/01 15:56
- かざっさん!もし俺のプログラムで間違いとかこう直したほうがもっとわかりやすいとかあったら 教えてください!
なんか俺のパソコンで コードが実行できなくてちゃんと動くかわからないんだ・・・
- 61 :アヌス : 2009/02/01 13:39
- 問題:1
public String halfAndHalf(String str){
int i=str.length();
String a=str.substring(0, i/2);
String b=str.substring(i/2, i);
String c = b.toUpperCase();
String d = a.toLowerCase();
String result = c + d;
return result;
}
- 62 :アヌス : 2009/02/01 15:29
- 問題2はこれで 動くかな・・・?
public String firstOf3Strings(String a, String b, String c){
if(a.compareTo(b)<0 || a.compareTo(b)==0){
if(a.compareTo(c)<0 || a.compareTo(c)==0){
return a;
}
else if(a.compareTo(c)>0){
return c;
}
}
else if(b.compareTo(a)<0){
if(b.compareTo(c)<0 || b.compareTo(c)==0){
return b;
}
else if(b.compareTo(c)>0){
return c;
}
}
}
- 63 :アヌス : 2009/02/01 15:59
- かざっさん!問題3と4なんですが、booleanが意味わからんのです・・・
四季をreturnで返すのに、booleanがtrueかfalseってどういう意味ですか・・・
trueとfalseを返すんじゃないんだよね・・・このプログラム
4も同じですよね。変数に誕生日の日がはいるんだろうけど、どうやってtrueかfalseって判断・・・?
かざっさんこれ組めますか・・・?
- 64 :大和 : 2009/02/01 16:44
- >>62
ああごめんなさい!作ってないから動くかわかりませんが,
考え方はそんな感じで良いと思います!
さすがみさきっさん。
>>63
ちょっと作ってみます!
- 65 :アヌス : 2009/02/01 16:57
- お願いします!
- 66 :アヌス : 2009/02/01 17:10
- 問題5 これで動くかな・・・
public String reverseString(String arg){
int i = arg.length();
String a = "";
while(i<0){
char b = arg.charAt(i);
i --;
String reverse = String.valueOf(b);
a = a + reverse;
}
return a;
}
- 67 :アヌス : 2009/02/01 17:15
- 6:
public int firstNints(int n){
int i, j=0;
for(i=0;i<=n;i++){
j += i;
}
return j;
}
- 68 :大和 : 2009/02/01 17:19
- 作ってみました!ごめんなさい動作確認してません!
間違ってたら修正してやってください^q^。
問い3
public String season(int month, boolean inNorthenHemisphere) {
if (month == 12 || 1 <= month <= 2) {
if (inNorthernHemisphere) {
return "Winter";
} else {
return "Summer";
}
} else if (3 <= month <= 5) {
if (inNorthernHemisphere) {
return "Spring";
} else {
return "Fall";
}
}
}
問い4
public int caughtSpeeding(int speed, boolean isBirthday) {
if (isBirthday) {
if (speed <= 65) {
return 0;
} else if (65 < speed <= 85) {
return 1;
} else if (85 < speed) {
return 2;
}
} else {
if (speed <= 60) {
return 0;
} else if (60 < speed <= 80) {
return 1;
} else if (80 < speed) {
return 2;
}
}
}
もしくは
public int caughtSpeeding(int speed, boolean isBirthday) {
if (isBirthday) {
speed -= 5;
}
if (speed <= 60) {
return 0;
} else if (60 < speed <= 80) {
return 1;
} else if (80 < speed) {
return 2;
}
}
すみません!どっちもコード書いただけで,動作確認していません。
動くかわかりませんごめんなさーい。
- 69 :アヌス : 2009/02/01 17:22
- 問2のプログラムだけど、なんかString型の値を返さないといけないとかってエラーでた・・・
if文の中で返しちゃいけないの・・・?
if文が終わったプログラムの最後に返さないといけないの・・・?
- 70 :大和 : 2009/02/01 17:33
- 夕飯買って来るね!
>>66,67
動作確認していませんが,どっちもこれで動くと思うよ!
考え方はまさにこれでオッケーです!
姑の小言みたいですが,
public int firstNints(int n) {
int j = 0;
for (int i = 0; i <= n; i++) {
j += i;
}
return j;
}
これでも動くはずだよ!動作確認していませんが・・!^q^;
- 71 :アヌス : 2009/02/01 17:29
- あー、booleanって if文の条件が真か偽かってことなのか
- 72 :アヌス : 2009/02/01 17:38
- 夕飯いってらっしゃい!
>>69の質問ですが、問3と問4のプログラムでも同じエラーが・・・
問2
firstOf3Strings(String a, String b, String c){
問3
season(int month, boolean inNorthernHemisphere){
問4
caughtSpeeding(int speed, boolean isBirthday){
この3つの下に赤線のエラーが・・・
このメソッドは結果を返さないといけない、と表示されました・・・
if文の中で返してるんだけど・・・最後の}の前で返さないといけないの・・・?
でもそうするとプログラムかわらない? ええ・・・こういうエラーみたことあります?
267 KB
続きを読む
掲示板に戻る 全部
次100 最新50
read.php ver2.4 2005/04/13