■掲示板に戻る■ 全部 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));
みたいな感じでいいのかな。多分他のケースも加えないといかんのかな。

}
自分でも書いてて理解できん・・・。かざっさん、この意味わかる・・・?


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文の中で返してるんだけど・・・最後の}の前で返さないといけないの・・・?
でもそうするとプログラムかわらない? ええ・・・こういうエラーみたことあります?


73 :アヌス : 2009/02/01 18:05
問8はこれで いいかな?
キーボードから数字をString型で受け取り、それぞれの数字をスペースのあるところで判断して切り取り、
int型に直して全て足す。

public int sumInScanner(Scanner stream){

int result = 0;

stream = new Scanner(System.in);
String index = stream.nextLine();
StringTokenizer str = new StringTokenizer(index, " ");

while(str.hasMoreTokens()) {
int indexInt = Integer.parseInt(str.nextToken());

result += indexInt;
}

return result;
}


74 :アヌス : 2009/02/01 18:18
最後の問9で、数字をキーボードからString型で受け取りそれぞれを分解してint型に直してそれぞれの大小を比較しようと思うのですが、(問8とまったく一緒)

stream = new Scanner(System.in);
String index = stream.nextLine();
StringTokenizer str = new StringTokenizer(index, " ");

 while(str.hasMoreTokens()) {
int indexInt = Integer.parseInt(str.nextToken());

ここでindexIntに切り取ったそれぞれの数字が格納されてると思うんだけど、どうやったらそれぞれの数字の大小を比較できますか?
変数が複数あれば、たとえば変数aの値と変数bの値を比較というだけで簡単だけど、この場合変数はindexIntだけ・・・しかもそのただ1つだけの変数に比較したい数字が全部格納されてて・・・
これはどうすれば・・・


75 :大和 : 2009/02/01 19:04
>>72
おおおごめんー!
問い2と問い3は「returnされない」可能性があるからエラー出たんだ!

if 内に return 書くなら,if, else if, else
どれに分岐しても return されるようにしないとだめだったんだー。
一番最後の else if を else に変えてみてください!

お風呂!


76 :アヌス : 2009/02/01 19:57
うお。if文はelseで終わらせないといかんのか・・・
でもそうすると問2がelseでは終わらせられないんですけど・・・ショボーン

public String firstOf3Strings(String a, String b, String c){

 if(a.compareTo(b)<0 || a.compareTo(b)==0){ //aがbより小さい あるいはaがbと一緒
   if(a.compareTo(c)<0 || a.compareTo(c)==0){ // aがcより小さいあるいはcと一緒
     return a; // aが一番小さいからaを返す
   }
    else if(a.compareTo(c)>0){ // cの方がaより小さい
    return c; // cを返す
    }
 }
 else if(b.compareTo(a)<0){ // bの方がaより小さい
   if(b.compareTo(c)<0 || b.compareTo(c)==0){ // bの方がcより小さい あるいは一緒
    return b; // bを返す
    }
    else if(b.compareTo(c)>0){ // cの方が小さい
     return c; // cを返す
    }
 }
}


else if(b.compareTo(a)<0){ を else にすると、aとbが比較できない・・・


77 :アヌス : 2009/02/01 20:01
 if(a.compareTo(b)<0 || a.compareTo(b)==0){ //aがbより小さい あるいはaがbと一緒
   if(a.compareTo(c)<0 || a.compareTo(c)==0){ // aがcより小さいあるいはcと一緒
     return a; // aが一番小さいからaを返す
   }
    else if(a.compareTo(c)>0){ // cの方がaより小さい
    return c; // cを返す
    }
 }
 else{ //ここをelseに変えて 動く・・・かな?
   if(b.compareTo(c)<0 || b.compareTo(c)==0){ // bの方がcより小さい あるいは一緒
    return b; // bを返す
    }
    else if(b.compareTo(c)>0){ // cの方が小さい
     return c; // cを返す
    }
 }
}

それと、compareTo()は自動的に大文字のほうが小文字より小さいと判断してくれるん・・・?


78 :アヌス : 2009/02/01 20:08
あれ・・・?かざっさんの問3と問4は最後のelseに変えただけでエラー消えたのに、俺の問2は・・・エラー赤線きえない・・・
このメソッドはstring型の結果を返さないといけません・・・ってa、b、c返してるじゃん・・・
なんでえええええええええええええええええ


79 :アヌス : 2009/02/01 20:13
問2と問9でつまづきました・・・


80 :大和 : 2009/02/01 22:54
問い2は else に変えただけじゃダメっぽそうだねorz。
問い9はどうしたもんかなー。
2と9はちょっと考えないとコード思いつかなそうだ・・@@;。
2も9も考えたいんだけど・・もう眠くて頭が。
明日は夜まで隼人板来れないんだ!
ごめんよー肝心な時に力になれなくてーー。
ちょっと自力で頑張ってみてください!


81 :大和 : 2009/02/01 22:55
朝と昼に書き込めたら書き込みます!


82 :アヌス : 2009/02/02 09:41
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{
return c;
}
}
else if(b.compareTo(a)<0){
if(b.compareTo(c)<0 || b.compareTo(c)==0){
return b;
}
else{
return c;
}
}
else{
return c;
}
}


最後にelseを加えてみたんだが・・・。
多分a、b、cがどんな文字入ってても最後のelseには分岐しないようにしたつもりなんだけど・・・



83 :アヌス : 2009/02/02 12:19
かざっさんの問3のプログラムを変えたのですが

public String season(int month, boolean inNorthernHemisphere){

if (month == 12 || month ==1 || month == 2) {
if (inNorthernHemisphere) {
return "Winter";
} else {
return "Summer";
}
} else if(month == 3 || month == 4 || month == 5 ){
if (inNorthernHemisphere) {
return "Spring";
} else {
return "Fall";
}
}else if(month == 6 || month == 7 || month == 8){
if (inNorthernHemisphere) {
return "Summer";
} else {
return "Winter";
}
}else{
if (inNorthernHemisphere) {
return "Fall";
} else {
return "Spring";
}
}
}

これのテストはどう作ればいいんでしょうか。booleanのところがエラーです・・・
12月の北半球(True)はWinterなのでそれをテストしようと以下のようにassertしたんだけどエラでるんです

@Test
public void testseason(){
ControlFun myFuns = new ControlFun();

assertEquals("Winter", myFuns.season("12", " "));

ここなんですけど、" "のところはなにを入れれば・・・TrueとかinNorthernHemisphereを入れても赤線エラーが・・・
booleanはどうやってテストするんですか・・・?


84 :アヌス : 2009/02/02 15:19
最後のプログラムはこんな感じかな

public double maximInScanner(Scanner stream){

stream = new Scanner(System.in);
String index = stream.nextLine();
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;
}
}
return resultDbl;
}


85 :アヌス : 2009/02/02 16:45
自己解決しました・・・
あとは実行させてちゃんと動くかどうか試すだけ・・・
お世話かけました〜!


86 :アヌス : 2009/02/02 17:00
ちょっと 貼らせてください あとで大学でコピペしやすいように

import java.util.Scanner;
import java.util.StringTokenizer;

public class ControlFun {

//program1
public boolean isLeapYear(int year){

if(year%400==0 || (year%4==0 && !(year%100==0))){
return true;
}else{
return false;
}
}
//program2
public String halfAndHalf(String str){

int i;

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;
}

//program3
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{
return c;
}
}
else if(b.compareTo(a)<0){
if(b.compareTo(c)<0 || b.compareTo(c)==0){
return b;
}
else{
return c;
}
}
else{
return c;
}
}


//program4
public String season(int month, boolean inNorthernHemisphere){

if (month == 12 || month ==1 || month == 2) {
if (inNorthernHemisphere) {
return "Winter";
} else {
return "Summer";
}
} else if(month == 3 || month == 4 || month == 5 ){
if (inNorthernHemisphere) {
return "Spring";
} else {
return "Fall";
}
}else if(month == 6 || month == 7 || month == 8){
if (inNorthernHemisphere) {
return "Summer";
} else {
return "Winter";
}
}else{
if (inNorthernHemisphere) {
return "Fall";
} else {
return "Spring";
}
}
}

//program5
public int caughtSpeeding(int speed, boolean isBirthday){

if (isBirthday) {
speed -= 5;
}

if (speed <= 60) {
return 0;
} else if (60 < speed && speed <= 80) {
return 1;
} else{
return 2;
}
}

//program6
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;
}

//program7
public int firstNints(int n){

int i, j=0;

for(i=0;i<=n;i++){
j += i;
}
return j;
}

//program8
public int factorial(int n){

int i, j=0;

for(i=0;i<=n;i++){
j *= i;
}
return j;
}

//program9
public int sumInScanner(Scanner stream){

int result = 0;

stream = new Scanner(System.in);
String index = stream.nextLine();
StringTokenizer str = new StringTokenizer(index, " ");

while(str.hasMoreTokens()) {
int indexInt = Integer.parseInt(str.nextToken());

result += indexInt;
}

return result;
}

//program10
public double maximInScanner(Scanner stream){

stream = new Scanner(System.in);
String index = stream.nextLine();
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;
}
}
return resultDbl;
}
}


87 :アヌス : 2009/02/02 17:04
import static org.junit.Assert.*;
import org.junit.Test;
import java.util.Scanner;

public class ControlFunTest {
@Test
public void testisLeapYear(){
ControlFun myFuns = new ControlFun();

assertTrue(myFuns.isLeapYear(2008));
assertFalse(myFuns.isLeapYear(2009));
assertFalse(myFuns.isLeapYear(2100));
assertTrue(myFuns.isLeapYear(2400));
}

@Test
public void testhalfAndHalf(){
ControlFun myFuns = new ControlFun();

assertEquals("abcdX2Y4", myFuns.halfAndHalf("x2y4abcd"));
assertEquals("defABC", myFuns.halfAndHalf("AbcDef"));
assertEquals("lloHE", myFuns.halfAndHalf("Hello"));
assertEquals("f aU O", myFuns.halfAndHalf("U of A"));
}

@Test
public void testfirstOf3Strings(){
ControlFun myFuns = new ControlFun();

assertEquals("First", myFuns.firstOf3Strings("Third", "Second", "First"));
assertEquals("Ma", myFuns.firstOf3Strings("Ma", "ma", "ma"));
assertEquals("a", myFuns.firstOf3Strings("c", "b", "a"));
assertEquals("A", myFuns.firstOf3Strings("A", "C", "B"));
assertEquals("a", myFuns.firstOf3Strings("a ", "a ", "a"));
}

@Test
public void testseason(){
ControlFun myFuns = new ControlFun();

assertEquals("Winter", myFuns.season(12, true ));
assertEquals("Summer", myFuns.season(6, true));
assertEquals("Winter", myFuns.season(8, false));
assertEquals("Spring", myFuns.season(11, false));
}

@Test
public void testcaughtSpeeding(){
ControlFun myFuns = new ControlFun();

assertEquals("0", myFuns.caughtSpeeding(60, false));
assertEquals("1", myFuns.caughtSpeeding(65, false));
assertEquals("0", myFuns.caughtSpeeding(65, true));
assertEquals("1", myFuns.caughtSpeeding(85, true));
assertEquals("2", myFuns.caughtSpeeding(81, false));
}

@Test
public void testreverseString(){
ControlFun myFuns = new ControlFun();

assertEquals("", myFuns.reverseString(""));
assertEquals("1", myFuns.reverseString("1"));
assertEquals("1234", myFuns.reverseString("4321"));
assertEquals("racecar", myFuns.reverseString("racecar"));
}

@Test
public void testfirstNints(){
ControlFun myFuns = new ControlFun();

assertEquals("15", myFuns.firstNints(5));
assertEquals("3", myFuns.firstNints(2));
assertEquals("1", myFuns.firstNints(1));
}

@Test
public void testfactorial(){
ControlFun myFuns = new ControlFun();

assertEquals("24", myFuns.factorial(4));
assertEquals("6", myFuns.factorial(3));
assertEquals("2", myFuns.factorial(2));
assertEquals("1", myFuns.factorial(1));
}

@Test
public void testsumInScanner(){
ControlFun myFuns = new ControlFun();

Scanner stream = new Scanner("1 2 3");
assertEquals(6, myFuns.sumInScanner(stream));
}

@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, myFuns.maximInScanner(stream), 1e-12);
}

}



88 :大和 : 2009/02/03 02:16
今日は疲れました。
みさきっさんうまくいったかな。
自己解決しましたね。さすが。
今日はお役に立てなくて失礼でした。
眠いーねるぅー。


89 :ねこみみ : 2009/02/03 05:49
プログラムもコンフィグもデバックが一番力つくよなぁ。


90 :アヌス : 2009/02/03 06:04
うおおお
エラーが・・・


91 :anusu : 2009/02/03 09:32
karimasu

import java.util.Scanner;
import java.util.StringTokenizer;

public class ControlFun {

// This method returns leap year.
public boolean isLeapYear(int year) {

if (year % 400 == 0 || (year % 4 == 0 && !(year % 100 == 0))) {
return true;
} else {
return false;
}
}

// This method returns a new string that has the upper case version of
// the first half of the argument at the end and the lower case version of
// the half of the argument at the beginning.
public String halfAndHalf(String str) {

int i;

i = str.length();

String a = str.substring(0, i / 2);
String b = str.substring(i / 2, i);

String c = a.toUpperCase();
String d = b.toLowerCase();

String result = d + c;

return result;
}

// This method returns a reference to the string that is not greater then
// the other two.
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 {
return c;
}
} else {
if (b.compareTo(c) < 0 || b.compareTo(c) == 0) {
return b;
} else {
return c;
}
}
}

// This method returns the current season in that hemisphere.
public String season(int month, boolean inNorthernHemisphere) {

if (month == 12 || month == 1 || month == 2) {
if (inNorthernHemisphere) {
return "Winter";
} else {
return "Summer";
}
} else if (month == 3 || month == 4 || month == 5) {
if (inNorthernHemisphere) {
return "Spring";
} else {
return "Fall";
}
} else if (month == 6 || month == 7 || month == 8) {
if (inNorthernHemisphere) {
return "Summer";
} else {
return "Winter";
}
} else {
if (inNorthernHemisphere) {
return "Fall";
} else {
return "Spring";
}
}
}

// This method returns 0 if the speed is 60 or less, returns 1 if speed is
// between 61 and 80, returns 2 if speed is 81 or more. Unless it is your
// birthday on that day, speed can be 5 higher in all cases.
public int caughtSpeeding(int speed, boolean isBirthday) {

if (isBirthday) {
speed -= 5;
}

if (speed <= 60) {
return 0;
} else if (60 < speed && speed <= 80) {
return 1;
} else {
return 2;
}
}

// This method returns a reference to a string that is the reverse order of
// the argument.
public String reverseString(String arg) {

int i = arg.length();
String a = "";
while (i > 0) {
char b = arg.charAt(i - 1);
i--;
String reverse = String.valueOf(b);
a = a + reverse;
}

return a;
}

// This method returns the sum of the first n integers.
public int firstNints(int n) {

int i, j = 0;

for (i = 0; i <= n; i++) {
j += i;
}
return j;
}

// This method returns n factorial.
public int factorial(int n) {

int i, j = 1;

for (i = 1; i <= n; i++) {
j = j * i;
}
return j;
}

// This method returns the sum of all integers.
public int sumInScanner(Scanner stream) {

int result = 0;

stream = new Scanner(System.in);
String index = stream.nextLine();
StringTokenizer str = new StringTokenizer(index, " ");

while (str.hasMoreTokens()) {
int indexInt = Integer.parseInt(str.nextToken());

result += indexInt;
}

return result;
}

// This method returns the largest number found.
public double maximumInScanner(Scanner stream) {

stream = new Scanner(System.in);
String index = stream.nextLine();
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;
}
}
return resultDbl;
}

}


92 :anusu : 2009/02/03 09:33
import static org.junit.Assert.*;
import org.junit.Test;
import java.util.Scanner;

public class ControlFunTest {

@Test
public void testisLeapYear() {
ControlFun myFuns = new ControlFun();

assertTrue(myFuns.isLeapYear(2008));
assertFalse(myFuns.isLeapYear(2009));
assertFalse(myFuns.isLeapYear(2100));
assertTrue(myFuns.isLeapYear(2400));
}

@Test
public void testhalfAndHalf() {
ControlFun myFuns = new ControlFun();

assertEquals("abcdX2Y4", myFuns.halfAndHalf("x2y4abcd"));
assertEquals("defABC", myFuns.halfAndHalf("AbcDef"));
assertEquals("lloHE", myFuns.halfAndHalf("Hello"));
assertEquals("f aU O", myFuns.halfAndHalf("U of A"));
}

@Test
public void testfirstOf3Strings() {
ControlFun myFuns = new ControlFun();

assertEquals("First", myFuns
.firstOf3Strings("Third", "Second", "First"));
assertEquals("Ma", myFuns.firstOf3Strings("Ma", "ma", "ma"));
assertEquals("a", myFuns.firstOf3Strings("a", "b", "c"));
assertEquals("B", myFuns.firstOf3Strings("B", "B", "B"));
assertEquals("A", myFuns.firstOf3Strings("A", "A", "C"));
assertEquals("T", myFuns.firstOf3Strings("Z", "Z", "T"));
assertEquals("B", myFuns.firstOf3Strings("R", "a", "B"));
assertEquals("A", myFuns.firstOf3Strings("A", "a", "G"));
assertEquals("A", myFuns.firstOf3Strings("B", "A", "F"));
assertEquals("a", myFuns.firstOf3Strings("a", "z", "a"));
assertEquals("A", myFuns.firstOf3Strings("a", "A", "a"));
assertEquals("A", myFuns.firstOf3Strings("b", "A", "a"));
assertEquals("a", myFuns.firstOf3Strings("a ", "a ", "a"));
}

@Test
public void testseason() {
ControlFun myFuns = new ControlFun();

assertEquals("Winter", myFuns.season(12, true));
assertEquals("Summer", myFuns.season(12, false));
assertEquals("Spring", myFuns.season(3, true));
assertEquals("Fall", myFuns.season(3, false));
assertEquals("Summer", myFuns.season(6, true));
assertEquals("Winter", myFuns.season(6, false));
assertEquals("Fall", myFuns.season(10, true));
assertEquals("Spring", myFuns.season(10, false));
}

@Test
public void testcaughtSpeeding() {
ControlFun myFuns = new ControlFun();

assertEquals(0, myFuns.caughtSpeeding(60, false));
assertEquals(1, myFuns.caughtSpeeding(65, false));
assertEquals(0, myFuns.caughtSpeeding(65, true));
assertEquals(1, myFuns.caughtSpeeding(85, true));
assertEquals(2, myFuns.caughtSpeeding(81, false));
}

@Test
public void testreverseString() {
ControlFun myFuns = new ControlFun();

assertEquals("", myFuns.reverseString(""));
assertEquals("1", myFuns.reverseString("1"));
assertEquals("1234", myFuns.reverseString("4321"));
assertEquals("racecar", myFuns.reverseString("racecar"));
}

@Test
public void testfirstNints() {
ControlFun myFuns = new ControlFun();

assertEquals(15, myFuns.firstNints(5));
assertEquals(3, myFuns.firstNints(2));
assertEquals(1, myFuns.firstNints(1));
}

@Test
public void testfactorial() {
ControlFun myFuns = new ControlFun();

assertEquals(24, myFuns.factorial(4));
assertEquals(6, myFuns.factorial(3));
assertEquals(2, myFuns.factorial(2));
assertEquals(1, myFuns.factorial(1));
}

@Test
public void testsumInScanner() {
//ControlFun myFuns = new ControlFun();

Scanner stream = new Scanner("1 2 3");
assertEquals(6, sumInScanner(stream));
}

@Test
public void testmaximumInScanner() {
//ControlFun myFuns = new ControlFun();

Scanner stream = new Scanner("1.0 -2.0 7.5 -3.0 0.5");
assertEquals(7.5, maximumInScanner(stream), 1e-12);
}

}


93 :anusu : 2009/02/03 09:34
Testcase: testsumInScanner took 0.016 sec
Caused an ERROR
No line found
java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1516)
at ControlFun.sumInScanner(ControlFun.java:149)
at ControlFunTest.testsumInScanner(ControlFunTest.java:113)

Testcase: testmaximumInScanner took 0 sec
Caused an ERROR
No line found
java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1516)
at ControlFun.maximumInScanner(ControlFun.java:165)
at ControlFunTest.testmaximumInScanner(ControlFunTest.java:121


94 :anusu : 2009/02/03 09:35
The following hint(s) may help you locate some ways in which your solution and your testing may be improved:

No line found (10 occurrences)

symptom: java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1516)
at ControlFun.sumInScanner



95 :anusu : 2009/02/03 09:35
148 1 stream = new Scanner(System.in);

149 1 String index = stream.nextLine();

150 0 StringTokenizer str = new StringTokenizer(index, " ");

151
152 0 while (str.hasMoreTokens()) {

153 0 int indexInt = Integer.parseInt(str.nextToken());

154
155 0 result += indexInt;

156 }
157
158 0 return result;

159 }
160
161 // program10
162 1 public double maximumInScanner(Scanner stream) {

163
164 1 stream = new Scanner(System.in);

165 1 String index = stream.nextLine();

166 0 StringTokenizer str = new StringTokenizer(index, " ");

167
168 0 double resultDbl = Double.parseDouble(str.nextToken());

169
170 0 while (str.hasMoreTokens()) {

171 0 double compareDbl = Double.parseDouble(str.nextToken());

172 0 if (resultDbl < compareDbl) {

173 0 resultDbl = compareDbl;

174 }
175 }
176 0 return resultDbl;

177 }
178 }



96 :anusu : 2009/02/03 09:36
saigo 2tu no program ga error okimasu...


97 :anusu : 2009/02/03 11:41
/* This class has ten unrelated method that process primitive types and
Strings, most requiring selective and repetitive control structures.
* programmer: Misaki Kakita
* Section leader: Matt Swatzell
* Created on Feb 02, 2009
*/

import java.util.Scanner;

public class ControlFun {

// This method returns leap year.
public boolean isLeapYear(int year) {

if (year % 400 == 0 || (year % 4 == 0 && !(year % 100 == 0))) {
return true;
} else {
return false;
}
}

// This method returns a new string that has the upper case version of
// the first half of the argument at the end and the lower case version of
// the half of the argument at the beginning.
public String halfAndHalf(String str) {

int i;

i = str.length();

String a = str.substring(0, i / 2);
String b = str.substring(i / 2, i);

String c = a.toUpperCase();
String d = b.toLowerCase();

String result = d + c;

return result;
}

// This method returns a reference to the string that is not greater then
// the other two.
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 {
return c;
}
} else {
if (b.compareTo(c) < 0 || b.compareTo(c) == 0) {
return b;
} else {
return c;
}
}
}

// This method returns the current season in that hemisphere.
public String season(int month, boolean inNorthernHemisphere) {

if (month == 12 || month == 1 || month == 2) {
if (inNorthernHemisphere) {
return "Winter";
} else {
return "Summer";
}
} else if (month == 3 || month == 4 || month == 5) {
if (inNorthernHemisphere) {
return "Spring";
} else {
return "Fall";
}
} else if (month == 6 || month == 7 || month == 8) {
if (inNorthernHemisphere) {
return "Summer";
} else {
return "Winter";
}
} else {
if (inNorthernHemisphere) {
return "Fall";
} else {
return "Spring";
}
}
}

// This method returns 0 if the speed is 60 or less, returns 1 if speed is
// between 61 and 80, returns 2 if speed is 81 or more. Unless it is your
// birthday on that day, speed can be 5 higher in all cases.
public int caughtSpeeding(int speed, boolean isBirthday) {

if (isBirthday) {
speed -= 5;
}

if (speed <= 60) {
return 0;
} else if (60 < speed && speed <= 80) {
return 1;
} else {
return 2;
}
}

// This method returns a reference to a string that is the reverse order of
// the argument.
public String reverseString(String arg) {

int i = arg.length();
String a = "";
while (i > 0) {
char b = arg.charAt(i - 1);
i--;
String reverse = String.valueOf(b);
a = a + reverse;
}

return a;
}

// This method returns the sum of the first n integers.
public int firstNints(int n) {

int i, j = 0;

for (i = 0; i <= n; i++) {
j += i;
}
return j;
}

// This method returns n factorial.
public int factorial(int n) {

int i, j = 1;

for (i = 1; i <= n; i++) {
j = j * i;
}
return j;
}

// This method returns the sum of all integers.
public int sumInScanner(Scanner stream) {

int result = 0;

while (stream.hasNextInt()) {
int indexInt = stream.nextInt();

result += indexInt;
}

return result;
}

// This method returns the largest number found.
public double maximumInScanner(Scanner stream) {

double resultDbl = stream.nextDouble();

while (stream.hasNextDouble()) {
double compareDbl = stream.nextDouble();
if (resultDbl < compareDbl) {
resultDbl = compareDbl;
}
}
return resultDbl;
}

}



98 :anusu : 2009/02/03 11:42
/* This class has @Test method for the all ten method in ControlFun.java.
* programmer: Misaki Kakita
* Section leader: Matt Swatzell
* Created on Feb 02, 2009
*/

import static org.junit.Assert.*;
import org.junit.Test;
import java.util.Scanner;

public class ControlFunTest {

@Test
public void testisLeapYear() {
ControlFun myFuns = new ControlFun();

assertTrue(myFuns.isLeapYear(2008));
assertFalse(myFuns.isLeapYear(2009));
assertFalse(myFuns.isLeapYear(2100));
assertTrue(myFuns.isLeapYear(2400));
}

@Test
public void testhalfAndHalf() {
ControlFun myFuns = new ControlFun();

assertEquals("abcdX2Y4", myFuns.halfAndHalf("x2y4abcd"));
assertEquals("defABC", myFuns.halfAndHalf("AbcDef"));
assertEquals("lloHE", myFuns.halfAndHalf("Hello"));
assertEquals("f aU O", myFuns.halfAndHalf("U of A"));
}

@Test
public void testfirstOf3Strings() {
ControlFun myFuns = new ControlFun();

assertEquals("First", myFuns
.firstOf3Strings("Third", "Second", "First"));
assertEquals("Ma", myFuns.firstOf3Strings("Ma", "ma", "ma"));
assertEquals("a", myFuns.firstOf3Strings("a", "b", "c"));
assertEquals("B", myFuns.firstOf3Strings("B", "B", "B"));
assertEquals("A", myFuns.firstOf3Strings("A", "A", "C"));
assertEquals("T", myFuns.firstOf3Strings("Z", "Z", "T"));
assertEquals("B", myFuns.firstOf3Strings("R", "a", "B"));
assertEquals("A", myFuns.firstOf3Strings("A", "a", "G"));
assertEquals("A", myFuns.firstOf3Strings("B", "A", "F"));
assertEquals("a", myFuns.firstOf3Strings("a", "z", "a"));
assertEquals("A", myFuns.firstOf3Strings("a", "A", "a"));
assertEquals("A", myFuns.firstOf3Strings("b", "A", "a"));
assertEquals("a", myFuns.firstOf3Strings("a ", "a ", "a"));
}

@Test
public void testseason() {
ControlFun myFuns = new ControlFun();

assertEquals("Winter", myFuns.season(12, true));
assertEquals("Summer", myFuns.season(12, false));
assertEquals("Spring", myFuns.season(3, true));
assertEquals("Fall", myFuns.season(3, false));
assertEquals("Summer", myFuns.season(6, true));
assertEquals("Winter", myFuns.season(6, false));
assertEquals("Fall", myFuns.season(10, true));
assertEquals("Spring", myFuns.season(10, false));
}

@Test
public void testcaughtSpeeding() {
ControlFun myFuns = new ControlFun();

assertEquals(0, myFuns.caughtSpeeding(60, false));
assertEquals(1, myFuns.caughtSpeeding(65, false));
assertEquals(0, myFuns.caughtSpeeding(65, true));
assertEquals(1, myFuns.caughtSpeeding(85, true));
assertEquals(2, myFuns.caughtSpeeding(81, false));
}

@Test
public void testreverseString() {
ControlFun myFuns = new ControlFun();

assertEquals("", myFuns.reverseString(""));
assertEquals("1", myFuns.reverseString("1"));
assertEquals("1234", myFuns.reverseString("4321"));
assertEquals("racecar", myFuns.reverseString("racecar"));
}

@Test
public void testfirstNints() {
ControlFun myFuns = new ControlFun();

assertEquals(15, myFuns.firstNints(5));
assertEquals(3, myFuns.firstNints(2));
assertEquals(1, myFuns.firstNints(1));
}

@Test
public void testfactorial() {
ControlFun myFuns = new ControlFun();

assertEquals(24, myFuns.factorial(4));
assertEquals(6, myFuns.factorial(3));
assertEquals(2, myFuns.factorial(2));
assertEquals(1, myFuns.factorial(1));
}

@Test
public void testsumInScanner() {
ControlFun myFuns = new ControlFun();

Scanner stream = new Scanner("1 2 3");
assertEquals(6, myFuns.sumInScanner(stream));
}

@Test
public void testmaximumInScanner() {
ControlFun myFuns = new ControlFun();

Scanner stream = new Scanner("1.0 -2.0 7.5 -3.0 0.5");
assertEquals(7.5, myFuns.maximumInScanner(stream), 1e-12);
}

}



99 :anusu : 2009/02/03 12:22
できた!


100 :アヌス : 2009/02/03 17:07
StringTokenizerは使うなって教授に言われた・・・
Scannerにもともとその機能はあるらしい
Scanner使えるな


101 :大和 : 2009/02/03 22:57
おおそりゃ知らなかった!
勉強になるなあ。
まだまだ私も精進せねば!


102 :アヌス : 2009/02/04 03:27
杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー
  杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー
 杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー
  ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏
   ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏
   ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏
  杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー
  杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー
 杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー


103 :アヌス : 2009/02/04 03:27
コニア画コニア画コニア画コニア画コニア画コニア画
コニア画コニア画コニア画コニア画コニア画コニア画

画アニコ画アニコ画アニコ画アニコ画アニコ画アニコ
画アニコ画アニコ画アニコ画アニコ画アニコ画アニコ

コニア画コニア画コニア画コニア画コニア画コニア画
コニア画コニア画コニア画コニア画コニア画コニア画


104 :ねこみみ : 2009/02/05 20:14
あらされとる


105 :アヌス : 2009/02/06 17:22
         ____
        / 、, ヽ
     ,, -┬ | ^  ^ |┬,-、
   / ,-、,-(:|lこHこl|;)ー--、  ほっほっほっほっほっほっ
    |/|,゙,l| ,,┴ー.vー┴、   ヽ
  /  __|、|/'v'T'~^~Tヽl\   \ ワシを呼んだかのう?
  |   {_Ξ}   ヽ,,,,,,/    \|   |
  \___/T'|'    | ''' |     |  /
     | l゚|     |┿|     |/
     | |l|     |┿|     |┤
    | |'|     |┿|     |┤
     |,__|゙|__,l人l_______|/
      | |,|          |
     `|'|          /
      l|、____λ__/
      !  v    v


106 :大和 : 2009/02/07 01:56
なつかしいAAだw


107 :アヌス : 2009/02/07 07:37
http://www.nicovideo.jp/watch/1231411233

クソワロタwwwwwwwアホダキメェwww


108 :アヌス : 2009/02/07 12:39
お前が車を避けたら事故が起こらなかったんだよ。
ブレーキ踏んだけど、車は直ぐに停まらないんだよ。
停まらない車が悪いんだ。

それから、雨で視界が悪かったんだよ。
雨の日にお前が出歩かなきゃ良かったんだ。

酒?飲ませた店と同僚が悪いんだよ。
付き合いは断れないだろう。
男ならわかるだろう?

お前がちゃんと注意していたら避けられたんだよ。
俺、悪くないよ。

雨の日の朝、青信号を普通に渡っていて跳ねられた俺が
運転者から後日、言われた言葉ににてるなw


109 :アヌス : 2009/02/08 15:49
かざっさん!今プログラムやっててテストメソッド作ってて最初のラインに
import org.junit.test;
import java.util.scanner;
をいれたんだけど、org.junit.testとjava.util.scannerに赤線はいってしまうんですよ。。。
Junit4は追加したのに・・・
解決方法しりませんか?


110 :アヌス : 2009/02/08 16:29
それと、配列の問題やってるんだけど、例えば、配列にいくつかの文字列が入ってて、
各配列の文字数を数えて、変数lenより大きい文字列の入った配列はいくつあるか調べるんですが

例)
stringLongerThan({"a","ab","abc"},0) 3つ全ての配列の文字列の文字数は0よりでかいから3を返す
stringLongerThan({"a","ab","abc"},2) 2より大きい文字数の文字列はabcのみだから1
stringLongerThan({"a","ab","abc","abcd","abcde","abcdef","abcdefg"},3) 3より大きい文字数の文字列は"abcd","abcde","abcdef","abcdefg"の4つだから4


以下のように組んだんだけど、strのところに黄色い線がはいるのです・・・このやり方ダメかな?

流れとしては、例えばstringLongerThan({"a","ab","abc"},2)これを解くとして、
最初の配列"a"の文字数を数え、1文字だからこれは2より小さく無視。
次の配列"ab"の文字数は2.これは2より大きくないから無視。
最後の配列"abc"の文字数は3。2よりデカイからOK。
よって最後の配列1個だけが2よりでかい文字数だったので、1を返します。

できてないかな・・・?Eclipseインスコしたのに実行できないんだ・・・

public int stringsLongerthan(String[] array, int len){

int result2=0;

for(int i=0;i int result1=0;
for(int j=0;j String str=array[i].substring(j, j+1);
result1 ++;
}
if(result1>len)
result2++;
}
return result2;
}


111 :アヌス : 2009/02/08 16:10
それと、配列の中にいくつか文字があって、同じ文字が2つ連続してるのが何回あるかを返します


numberOfPairs({"a", "b", "c"}) ダブりはない→0
numberOfPairs({"b", "a", "a", "b"}) bは連続してない。aが1回連続してる→1
numberOfpairs({"a", "a", "a"}) aが2回連続してる→2
numberOfPairs({"a", "a", "b", "b"}) aが1回、bが1回連続してる→2


以下のようにくんだんだけど、最初のpublic int numberOfPairs(String[] array){に赤線が入って、このメソッドはint型の結果をreturnしなければいけないってでるんだ。最後にreturnしてるんだけど・・・

public int numberOfPairs(String[] array){

int result=0;

for(int i=0;iif(i+1==array.length){
break;
}else if(array[i]==array[i+1]){
result++;
}
}
return result;
}




112 :アヌス : 2009/02/08 16:19
文字列の配列で、例えば({"and", "there", "goes", "another"})なんてのが入ってて、anotherと同じ文字列はあるかどうか調べるときに、

for(int i=0;i if(array[i]=="another")
return true
}

なんていうふうに比較してってもいいん?


113 :アヌス : 2009/02/08 17:12
>>111の赤線は解決しました。しかし>>112でも聞いたけど、文字列の比較ってarray[i]==array[i+1]でいいのかな・・・?


114 :アヌス : 2009/02/08 21:12
はじめString型の配列arrayがあり、配列の最後の要素を削除する場合、

String[] temp = new String[array.length-1]; //一時配列tempを準備して、その配列の要素数をarrayより1つ少なくする。
array = temp; //元の配列arrayに代入

これだけで できますか?

配列arrayの内容が({"A","B","C","D"})の場合 → ({"A","B","C"})こういう結果にできますか?上の表記で


115 :アヌス : 2009/02/08 22:27
>>109も解決しました

>>112のように 配列の中の文字列の比較と
>>114の配列の削除を教えてもらえますか




116 :アヌス : 2009/02/08 22:57
コッコ


117 :大和 : 2009/02/08 23:07
>>114
動作確認してないので間違えていたらごめんね。

>はじめString型の配列arrayがあり、配列の最後の要素を削除する場合、
>
>String[] temp = new String[array.length-1]; //一時配列tempを準備して、その配列の要素数をarrayより1つ少なくする。
>array = temp; //元の配列arrayに代入
>
>これだけで できますか?
>
>配列arrayの内容が({"A","B","C","D"})の場合 → ({"A","B","C"})こういう結果にできますか?上の表記で

String[] array = new String[3];
array[array.length - 1] = null;

でどうかな?エラー吐いたら教えてねー。


118 :大和 : 2009/02/08 23:23
>>112
そうそうまさにそんな感じ!
こういう場合は for をよく使うねー。

for (int i = 0; i < array.length; i++) {
    if ("another".equals(array[i])) {
        return true;
    }
}

String を比較する時は equals() を使うなんてどうでしょ?


119 :アヌス : 2009/02/09 01:28
なるほど、こんなやりかたが。
equals()はarray[i]=="another"とまったく同じ意味?


267 KB
続きを読む

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.php ver2.4 2005/04/13