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

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


153 :大和 : 2009/02/11 03:59
おおこれでちゃんと動いてるはず。
各コードがどう動いてるか確認してみてください。
細かいところは動作確認してないから,間違ってるとこあるかもしれません。
間違ってるとこあったら直しちゃってください。



public class SortOfSort {
    public static void main(String[] args) {
        int[] array = {4, 0, 2, 5, 1, 2, 7};
        sortOfSort(array);
    }
    public static void sortOfSort(int[] array) {

        int counter = 0; // 言葉の説明じゃわかりにくいだろうから,実際に println で出力させてどう動いてるか確認してみてね!
        int count_min = 0;
        int min = array[0];

        // 最小値を求める
        for (int i = 1; i < array.length; i++) {
            if (min > array[i]) {
                min = array[i];
                count_min++; // 数字が入れ替わるたびにカウント
                count_min += counter; // 最小値のインデックスが格納されています
                counter = 0;
                continue; // continue は break と似た処理を行います
            }
            counter++;
        }
        counter = 0; // 次の for 文でまた使うので,0 に戻しておく

//        System.out.println(counter); // 動作確認したければしてくれお(^ω^)
//        System.out.println(count_min);
//        System.out.println(min);
//        System.out.println();

        int count_max = 0;
        int max = array[0];

        // 最大値を求める
        for (int i = 0; i + 1 < array.length; i++) {
            if (max < array[i + 1]) {
                max = array[i + 1];
                count_max++;
                count_max += counter; // 同様に最大値のインデックス
                counter = 0;
                continue;
            }
            counter++;
        }

//        System.out.println(counter); // 動作確認したければしてくれお(^ω^)
//        System.out.println(count_max);
//        System.out.println(max);
//        System.out.println();

        // 最小値を配列の一番前へ
        for (int i = count_min; i - 1 >= 0; i--) {
            int temp_min = array[i - 1];
            array[i - 1] = array[i];
            array[i] = temp_min;
        }

//        System.out.println(array[i]); // 動作確認したければしてくれお(^ω^)
//        System.out.println();

        // 最大値を配列の一番後ろへ
        for (int i = count_max; i + 1 < array.length; i++) {
            int temp_max = array[i + 1];
            array[i + 1] = array[i];
            array[i] = temp_max;
        }

//        System.out.println(array[i]); // 動作確認したければしてくれお(^ω^)
//        System.out.println();

        // 配列が整列されているか調べる
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }

    }
}



154 :大和 : 2009/02/11 04:07
脳内コンパイルできれば作る手間省いてアドバイスできるんだろうけど,
一回一回作らないとどこを修正すればいいか今の私じゃ見当つかないや。
コード見ただけでどこがおかしいかわかる人ってすごいなあ・・。
>>141は眠いので出来ませんでした。。おやすみい。


155 :アヌス : 2009/02/11 13:29
昨日は朝6時過ぎまでこれと格闘してた・・・でも結局できんかったよ・・・
今日大学終わって速攻で帰ったのがついさっき、夜7時過ぎ。締め切りが夜10時だったので、それから取り組んでなんとかできました・・・
参考になりました!ありがとうございます。

今回のでまなんだことは、配列をもう一つよういして、それに代入していく、ということですね。そっちのほうが簡単でいいことがわかった


156 :アヌス : 2009/02/11 13:28
明日大学でプリントしないといけないので、ちょっと借ります

/* This class has ten unrelated method that process primitive types, strings, and array.
* programmer: Misaki Kakita
* Section leader: Matt Swatzell
* Created on Feb 10, 2009
*/

import java.util.ArrayList;

public class ArrayFun {

// This method returns true if the sum of all array elements is greater than
// sum.
public boolean sumGreaterThan(double[] array, double sum) {

double result = 0;

for (int i = 0; i < array.length; i++) {
result += array[i];
}

if (result > sum) {
return true;
} else {
return false;
}
}

// This method returns the number of vowels which could be the letters
// 'a', 'e', 'i', 'o', or 'u' in either upper case or lower case.
public int numberOfVowels(char[] array) {

int result = 0;

for (int i = 0; i < array.length; i++) {
if (array[i] == 'a' || array[i] == 'e' || array[i] == 'i'
|| array[i] == 'o' || array[i] == 'u' || array[i] == 'A'
|| array[i] == 'E' || array[i] == 'I' || array[i] == 'O'
|| array[i] == 'U')
result++;
}
return result;
}

// This method returns the number of times a pair occurs in array.
public int numberOfPairs(String[] array) {

int result = 0;

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

// This method returns the number of Strings with a length greater than len.
public int stringsLongerThan(String[] array, int len) {

int result = 0;

for (int i = 0; i < array.length; i++) {
if (array[i].length() > len)
result++;
}
return result;
}

// This method returns the number of element in an array of Strings that
// equals valueToFind.
public int howMany(String[] array, String valueToFind) {

int result = 0;

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

// This method modifies the parameter array to place the larger at index n-1
// and the smallest integer at array[0].
public int[] sortOfSort(int[] array) {

int min = array[0];
int max = array[0];
int min_index = 0;
int max_index = 0;

for (int i = 0; i < array.length; i++) {
if (min > array[i]) {
min = array[i];
min_index = i;
}
if (max < array[i]) {
max = array[i];
max_index = i;
}
}

int[] new_array = new int[array.length];

if (min_index == array.length - 1 && max_index == 0) {
int temp = array[min_index];
array[min_index] = array[max_index];
array[max_index] = temp;

return array;
} else {
new_array[0] = min;
new_array[array.length - 1] = max;
int count = 1;
for (int i = 0; i < array.length; i++) {
if (min_index != i && max_index != i) {
new_array[count] = array[i];
count++;
}
}

return new_array;
}
}

// This method modifies the parameter array so it still contains the exact
// same numbers as the given array, but rearranged so that all the even
// numbers come before all the odd numbers.
public int[] evensLeft(int[] array) {

ArrayList gusu = new ArrayList();
ArrayList kisu = new ArrayList();

for (int i = 0; i < array.length; i++) {
if (array[i] % 2 == 0) {
gusu.add(new Integer(array[i]));
} else {
kisu.add(new Integer(array[i]));
}
}
gusu.addAll(kisu);

for (int i = 0; i < gusu.size(); i++) {
array[i] = (gusu.get(i)).intValue();
}

return array;
}

// This method modifies array so it is left shifted n times.
public int[] shiftNTimes(int[] array, int numShifts) {

for (int i = 0; i < numShifts; i++) {
for (int j = 0; j < array.length - 1; j++) {
int temp = array[j + 1];
array[j + 1] = array[j];
array[j] = temp;
}
}
return array;
}

// This method returns a new char[] that is a copy of array with all
// occurrences of oldChar replaced by newChar.
public char[] replaced(char[] array, char oldChar, char newChar) {

char[] array2 = new char[array.length];

for (int i = 0; i < array.length; i++) {
if (array[i] == oldChar)
array2[i] = newChar;
else
array2[i] = array[i];
}
return array2;
}

// This method returns a new String[] that is a copy of array with the first
// occurrence of strToRemove in array not included(if found).
public String[] oneRemoved(String[] array, String strToRemove) {

int i = 0, j = 0, l = 0, count = 0;
String[] array2 = new String[array.length - 1];

for (int k = 0; k < array.length; k++) {
if (strToRemove.equals(array[k])) {
l++;
}
}

if (l != 0) {
while (i < array.length) {
if (strToRemove.equals(array[i]) && count == 0) {
i++;
count++;
} else {
array2[j] = array[i];
i++;
j++;
}
}
}
if (l == 0)
return array;
else
return array2;
}

}


157 :アヌス : 2009/02/11 13:31
* This class has @test method for the all ten method in arrayFun.java.
* Programmer: Misaki Kakita
* Section leader: Matt Swatzell
* Created on Feb 10, 2009
*/

import static org.junit.Assert.*;
import org.junit.Test;

public class ArrayFunTest {

@Test
public void testsumGreaterThan() {
ArrayFun af = new ArrayFun();

double[] a1 = { 1.1, 2.2, 3.3 };

assertEquals(true, af.sumGreaterThan(a1, 4.0));
assertEquals(false, af.sumGreaterThan(a1, 6.6));
}

@Test
public void testnumberOfVowels() {
ArrayFun af = new ArrayFun();

char[] a1 = { 'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U', 'x',
'z' };
char[] a2 = { 'y', 'Y' };
char[] a3 = { 'a', 'X', 'a' };

assertEquals(10, af.numberOfVowels(a1));
assertEquals(0, af.numberOfVowels(a2));
assertEquals(2, af.numberOfVowels(a3));
}

@Test
public void testnumberOfPairs() {
ArrayFun af = new ArrayFun();

String[] test = new String[3];
test[0] = "a";
test[1] = "b";
test[2] = "c";
assertEquals(0, af.numberOfPairs(test));

String[] test2 = new String[4];
test2[0] = "b";
test2[1] = "a";
test2[2] = "a";
test2[3] = "b";
assertEquals(1, af.numberOfPairs(test2));
}

@Test
public void teststringsLongerThan() {
ArrayFun af = new ArrayFun();

String[] a1 = { "a", "ab", "abc" };
String[] a2 = { "a", "ab", "abc", "abcd", "abcde", "abcdef", "abcdefg" };

assertEquals(3, af.stringsLongerThan(a1, 0));
assertEquals(1, af.stringsLongerThan(a1, 2));
assertEquals(4, af.stringsLongerThan(a2, 3));
}

@Test
public void testhowMany() {
ArrayFun af = new ArrayFun();

String[] a1 = { "A", "a", "A", "a" };
String[] a2 = { "And", "there", "goes", "another" };
String[] a3 = { "And", "there", "goes", "other" };

assertEquals(2, af.howMany(a1, "A"));
assertEquals(1, af.howMany(a2, "another"));
assertEquals(0, af.howMany(a3, "Not Here"));
}

@Test
public void testsortOfSort() {
ArrayFun af = new ArrayFun();

int[] a1 = {4, 3, 2, 0, 1, 2};
int[] a2 = { 4, 3, 2, 1 };
int[] a3 = {1, 3, 2, 4};

int[] a4 = {0, 3, 2, 1, 2, 4};
int[] a5 = { 1, 3, 2, 4 };
int[] a6 = {1, 3, 2, 4,};

int[] result1 = af.sortOfSort(a1);
int[] result2 = af.sortOfSort(a2);
int[] result3 = af.sortOfSort(a3);

for (int i=0;iassertEquals(a4[i], result1[i]);
}

for (int j = 0; j < result2.length; j++){
assertEquals(a5[j], result2[j]);
}

for (int k = 0; k < result3.length; k++){
assertEquals(a6[k], result3[k]);
}
}

@Test
public void testevensLeft() {
ArrayFun af = new ArrayFun();

int[] a1 = { 1, 0, 1, 0, 0, 1, 1 };
int[] a2 = { 2, 2, 2 };
int[] a3 = { 3, 3, 2};

int[] a4 = { 0, 0, 0, 1, 1, 1, 1 };
int[] a5 = { 2, 2, 2 };
int[] a6 = { 2, 3, 3};

int[] result1 = af.evensLeft(a1);
int[] result2 = af.evensLeft(a2);
int[] result3 = af.evensLeft(a3);

for (int i = 0 ; i < result1.length ; i ++ ){
assertEquals(a4[i],result1[i]);
}

for(int k=0; kassertEquals(a5[k],result2[k]);
}

for(int j=0; jassertEquals(a6[j],result3[j]);
}

}

@Test
public void testshiftNTimes() {
ArrayFun af = new ArrayFun();

int[] a1 = { 1, 2, 3, 4, 5, 6, 7 };
int[] a2 = { 1, 2, 3, 4, 5, 6, 7 };
int[] a3 = { 1, 2, 3 };

int [] a4 = { 4, 5, 6, 7, 1, 2, 3 };
int [] a5 = { 1, 2, 3, 4, 5, 6, 7 };
int [] a6 = { 3, 1, 2 };

int[] result1 = af.shiftNTimes(a1, 3);
int[] result2 = af.shiftNTimes(a2, 0);
int[] result3 = af.shiftNTimes(a3, 5);

for (int i = 0 ; i < result1.length ; i ++ ){
assertEquals(a4[i],result1[i]);
}

for (int j = 0; j < result2.length; j++){
assertEquals(a5[j],result2[j]);
}

for(int k=0; kassertEquals(a6[k],result3[k]);
}
}

@Test
public void testreplaced() {
ArrayFun af = new ArrayFun();

char[] a1 = { 'A', 'B', 'C', 'D', 'B' };
char[] a2 = { 'n', 'n', 'n', 'D', 'n' };
char[] a3 = { 'n', 'n', 'n' };

char[] a4 = { 'A', 'B', 'L', 'D', 'B' };
char[] a5 = { 'T', 'T', 'T', 'D', 'T' };
char[] a6 = { 'n', 'n', 'n' };

char[] result1 = af.replaced(a1, 'C', 'L');
char[] result2 = af.replaced(a2, 'n', 'T');
char[] result3 = af.replaced(a3, 'T', 'n');

for (int i = 0 ; i < result1.length ; i ++ ){
assertEquals(a4[i],result1[i]);
}

for (int j = 0; j < result2.length; j++){
assertEquals(a5[j],result2[j]);
}

for(int k=0; kassertEquals(a6[k],result3[k]);
}
}

@SuppressWarnings("deprecation")
@Test
public void testoneRemoved() {
ArrayFun af = new ArrayFun();

String[] a1 = { "A", "B", "C", "D", "B" };
String[] a2 = { "A", "BB", "CCC", "DDD", "B" };

String[] a3 = { "B", "C", "D", "B" };
String[] a4 = { "A", "BB", "CCC", "DDD", "B" };
String[] a5 = { "A", "C", "D", "B" };

assertEquals(a3, af.oneRemoved(a1, "A"));
assertEquals(a4, af.oneRemoved(a2, "NotHere"));
assertEquals(a5, af.oneRemoved(a1, "B"));
}




158 :大和 : 2009/02/11 18:01
無事期限までに間に合ったみたいだね。良かったよかった。


159 :アヌス : 2009/02/11 19:12
締め切り1時間前になんとかおわりますた・・・


160 :大和 : 2009/02/11 21:46
おつかれさんでした!


161 :ねこみみ : 2009/02/12 22:06
これでAだ


162 :アヌス : 2009/02/13 11:40
おいおい
JAVAのプログラムは毎週出るんだぜ・・・
今も新しいのが出てる・・・来週の火曜までだ・・・
他の課題もあるのに・・・

しかも来週試験ですよ、JAVAの


163 :アヌス : 2009/02/14 20:31
かざっさん。privateというのはマクロみたいなものですか?いまいち、通常の変数の定義とprivateでの定義の違いがわからないのです
privateでの、他のクラスとの関係とか・・・

あと、コレクションってわかりますか?
コンピュータのメモリが記憶できるだけのフロートの数をストアできる空のコレクションを作らないといけないんですけど、コレクションてのがよく理解できなくて・・・
例として、

public DescriptiveStatistics()


publich int size() //コレクションのサイズ。このオブジェクトに追加された要素の数を返す

public void addInOrder(double nNumber)
// nNumberをコレクションに追加。必要条件としてコンピュータはnNumberを足すのに十分なメモリを持っているとする。必要なら配列を増やす。
@param nNumberは、ラウンディングせず、このオブジェクトに追加するためのdatumである。

public double get(int index)
// 与えられたインデックスでの要素をゲッツ
@param 返されるための要素のインデックス





と、このようにメソッドが合計10個あるんだけど、コレクションがよくわからなくてどう組めばいいのかがわからないのです・・・
あとパラメータとかdatumとか・・・わかりますか?


164 :アヌス : 2009/02/14 18:37
AVに出演した妊婦がインタビュー中に意識を失って死亡

http://changi.2ch.net/test/read.cgi/ms/1234520845/l50x

warosu www


165 :大和 : 2009/02/15 12:08
すみませんマシンを新しくしてIDEとか,
何も入れてない状態なので動作確認できませんので,
間違ってたらすみません。

private ってのはアクセス権限のレベルの事です!
public が一番アクセス権限軽くて,デフォルト→protected→private と重くなっていきます。
private は「どのクラスからもアクセスできない」権限レベルっす。

例えば,



例1
public class A {
public static void main(String[] args) {
B instanceB = new B();
instanceB.testMethod();
}
}
public class B {
public testMethod() {
System.out.println("クラスBにアクセスしました。");
}
}



例2
public class A {
public static void main(String[] args) {
B instanceB = new B();
instanceB.testMethod();
}
}
public class B {
private testMethod() {
System.out.println("クラスBにアクセスしました。");
}
}


どうですか?動作確認していないので動かなかったらごめんですが,
例1はクラスBにアクセスできてますが,例2はアクセスできていなくないですか?
これが private と 他のアクセスレベルとの違いですー。


166 :大和 : 2009/02/15 12:13
コレクションは Map とか List の事だねー。
コレクションとは「オブジェクト」を格納する配列みたいなものです。
配列は int 型とか char 型を格納しますが,コレクションは「オブジェクト」を格納するっす!


167 :大和 : 2009/02/15 12:23
>>163
@param は Javadoc に載る項目名っすね!
他には @return とか @author とかあったはずっす。
@param は「//」と同類だと思ってください。あってもなくてもプログラム動作します。
「//」のコメントつけようがつけないが,プログラム動きますよね。それと同類っす。

datum は data と同義語らしいす!
詳しくは↓をご参照くだされ。
http://dictionary.goo.ne.jp/search.php?MT=datum


168 :アヌス : 2009/02/15 12:41
例2では、赤線のエラーがでてコンパイルできないですね


169 :アヌス : 2009/02/15 12:52
B instanceB = new B();
instanceB.testMethod(); ←特にこのつなげ方は・・・?

これって一体どういう意味なんでしょう。
クラスBで public testMethod() こうしてるのは、testMethodをクラスAで定義してクラスBで呼び出してる・・・?


170 :アヌス : 2009/02/15 12:46
オブジェクトっていうのがいまいちなんですが、オブジェクトって配列本体のことじゃない・・・?
本にはそんなこと書いてあったんだけど、
オブジェクトを格納するってどういう意味でしょうか・・・


171 :大和 : 2009/02/15 12:49
こんな感じかなあ(’’。
あ!適当に書いてるので間違えてるかも!間違ってたら暫時直してー。

public DescriptiveStatistics()

/**
* コレクションのサイズ。このオブジェクトに追加された要素の数を返す
*/
publich int size() {
return [コレクションの「総要素数」を int で返す];
}

/**
* nNumberをコレクションに追加。必要条件としてコンピュータはnNumberを足すのに十分なメモリを持っているとする。必要なら配列を増やす。
* @param nNumberは、ラウンディングせず、このオブジェクトに追加するためのdatumである。
*/
public void addInOrder(double nNumber) {
// ArrayList を使うのは間違いない。ただ nNumber の意味が不明瞭
ArrayList list = new ArrayList();
list.add([nNumber?それともnNumber分だけ list.add() を記述しろ?]);
}

/**
* 与えられたインデックスでの要素をゲッツ
* @param 返されるための要素のインデックス
*/
public double get(int index) {
/*
* !?重大なヒントが出ましたね。
* コレクションからの取得方法は「インデックスで取得しろ」とあります。
* つまりコレクションは Map じゃなくて List を使えって事ですね。
* Map は「キーワード」で要素を取り出し,List は「インデックス」で要素を取り出すのです。
*/

// get() の処理の流れ
// [1]addInOrder() で作成した ArrayList から要素を取得し,
// [2]格納されたDouble型の値を double 型にキャストし,
// [3]キャストした double 型を return する。
}

こんな感じ・・かなあ。間違ってる箇所あったら暫時直してね!


172 :大和 : 2009/02/15 13:13
>>168
だよね!意図どおりに動いてくれたか。よしよし。



>>169
あ,ごめーん。ちょっとややこしくしちゃったかも。

testMethod(); だけでもひょっとしたらエラーにならないかも。

えっとね!「B instanceB = new B();」と「instanceB.」は,
別クラスのメソッド・変数にアクセスする際のお作法っす!



>>170
そうそう!!合ってますあってます。
「配列」は「基本型の値」を格納してくれる「オブジェクト」です。
「コレクション」は「オブジェクト」を格納してくれる「存在」です。
配列とコレクションの違いはこんな感じ(わかりにくいね・・)。
配列とコレクションの共通点は「いくつもの要素をまとめて格納させれる事」だよ!
配列とコレクションの役割・使い道はほとんど同じだと思ってくれていいよー。

実際にオブジェクトを格納してみましょうか。

// String 型オブジェクト格納しますね。
ArrayList list = new ArrayList();
list.add("柿田岬");
list.add("今を時めく18歳です");
list.add("趣味はリアル格ゲーです");

変数 list にインデックス「0」に「柿田岬」。インデックス「1」に今を・・って感じで格納されています。



あ・・・。これ書いてて気づきましたが,
これもうワンステップ複雑にしたコレクションの使い方かも・・。
ちょっともう一回>>163の雛形見直します。


173 :アヌス : 2009/02/15 13:10
すいません・・・。ごちゃ混ぜになっちゃった。
少しずつ確認させて下さい

かざっさんの例だと、クラスAからBにアクセスするんだよね?

B instanceB = new B();

これは、まずアクセスしたいクラス名(B)を書いて 変数(instanceB)を書いてnew B()とアクセスしたいクラスを書く・・・?

instanceB.testMethod();

これは、アクセスしたいクラスのメソッド(testMethod())を、クラスAで定義した変数(instanceB)とくっつけて書いたってこと・・・?

構造がわかりずらひ・・・


174 :大和 : 2009/02/15 13:17
>>173
そうそう!これは「他クラスにアクセスする」際のお作法です。

[アクセスしたいクラス名] [変数名] = new [アクセスしたいクラス名]();
[↑の変数名].[アクセスしたいクラスのメソッド名];

です!これがJavaでのお作法ですー。
いえいえ,わからないとこはじゃんじゃん文章化すると良いですから,
どんどんわからないとこは書いてください。


175 :アヌス : 2009/02/15 13:24
なるほど。
[アクセスしたいクラス名] [変数名] = new [アクセスしたいクラス名]();
[↑の変数名].[アクセスしたいクラスのメソッド名];
これは公式として 覚えるしかないのですね・・・

>>163のサイズを返すところで、返すにはreturnを使うのかな・・・。化すんだから当然だと思うんだけど、
ネットで調べてもなんか・・そういう例がなくて・・・



176 :アヌス : 2009/02/15 13:34
今回の課題では、全部で10個のpublicをpublic DescriptiveStatstics()に書かないといかんのですが、
>>163のように、size、 addInOrder、 getのほかに、 average、 max、 min、 range、 median、 standardDeviatioon(数式を使って計算)とあります。
でもこれって、全部一つのクラスに書くんだよね・・・

public class DescriptiveStatstics(){
public DescriptiveStatistic(){
public int size(){
public void addInOrder(double nNumber)
public double get(int index){
public double max(){
public double min(){
public double range(){
public double median(){
public double standardDeviation(){

という感じですね。だから他のクラスにアクセスする必要は・・・あ、もしかしてこれをテストするためのテストメソッドのクラスにアクセスするっていみなのか・・・


177 :大和 : 2009/02/15 13:34
>>175
そうそう合ってるよ!
「void」がついてないメソッドはすべて,「必ず」return させます。

int size() {} とか
boolean isNotNull() {} とかは必ず return します!


178 :アヌス : 2009/02/15 13:35
>>174
ありがとうございますです!
最初のいくつかのメソッドだけちょっと書いてみます。


179 :大和 : 2009/02/15 13:38
ああそうかーなるほどね!
他のメソッド名見てなんとなく全体像わかりました。
となると,やっぱりさっき私が書いた雛形はちょっと部分部分で間違ってるなあ。
がんばって!わからない事が生じたらまた書き込んでねー。


180 :大和 : 2009/02/15 13:41
>>176
そうそうすべてひとつのクラスに書くねー。
だから他のクラスにアクセスする必要はないね。
でもテストクラス作ったら,テストクラスからこのクラス呼び出す時に必要になるね。
がんばってねー(´ω`)。


181 : : [ここ壊れてます]
[ここ壊れてます]


182 : : [ここ壊れてます]
[ここ壊れてます]


183 : : [ここ壊れてます]
[ここ壊れてます]


184 : : [ここ壊れてます]
[ここ壊れてます]


185 : : [ここ壊れてます]
[ここ壊れてます]


186 : : [ここ壊れてます]
[ここ壊れてます]


187 :アヌス : 2009/02/16 17:34
できたけどエラーが一個でる・・・


188 :大和 : 2009/02/17 05:10
まじか・・
あれもう出来あげちゃったのか


189 :アヌス : 2009/02/17 05:34
最後のメソッドがなんかおかしい。テストメソッドは全部ちゃんと動いてるのに、
ネットで提出したら配列[1.0, 2.0, 3.0]でエラーとかなんとか・・・
[1.0, 2.0, 3.0]はテストメソッドで既にためして ちゃんと動いてるんだが・・・
教授にメールしてみよう


190 :大和 : 2009/02/17 06:08
謎だねえ・・。
わからない時はもう人に聞いちゃったほうがいいね!


191 :アヌス : 2009/02/17 18:57
別のメソッドで求めた配列の平均値を最後のメソッドでも使うためにprivateで定義して、引っ張ったんだけど、これがいかんかったみたいで。
最後のメソッドでもう一度平均値を求めたら100%になった。
しかしprivateで定義して、平均メソッドから最後のメソッドに平均値を直接引っ張って使ってもテストメソッドでは問題なかったんだが・・・
なんなんだ・・・一体・・・


192 :アヌス : 2009/02/18 15:49
かざっさん。もしstringに"U of A"と文字列があったら、charAt(1)にヒットするのは、Uとoの間のスペースになるん?


193 :アヌス : 2009/02/18 19:03
かざっさん。
String型の配列の文字列を、インデックス0から順に、char型の配列のインデックス0からの文字と比較したいんだけど

String str = "abcd"
char chars = {'a', 'b', 'c', 'd'};

これはインデックス0から順に比べたらまったく同じ文字が同じインデックスにあることになるけどこういうことってできる?

int j =0;

for(int i=0;i<5;i++){
String c = str.substring(i, i+1);

if(c.equals(chars[i])) ←つまりstringとcharを比較する場合、これでできる?
j++;

}

if(j==5)
return true;
else
return false;


194 :大和 : 2009/02/18 23:46
>>192
そうそう半角スペースがヒットするよ!

>>193
equals() は String 型の値が同じかどうか見るんだー。
char[i] を1回ずつ String型にキャスト(型変換)して,
それからなら出来るはずだよ!

if(c.equals(String.valueOf(chars[i]))←こんな感じだろうか!


195 :アヌス : 2009/02/19 18:51
かざっさん。これだけで→String.valueOf(chars[i]) charをStringに変換してることになるの?


196 :アヌス : 2009/02/19 18:54
それとindexOfなんだけど、

String s = "U of Arizona";と定義した場合、

assertEquals(5, s.indexOf("Arizona")); って通る? sには、インデックスの5番目からArizonaって文字が始まってるからOKなん?
indexOfも、最初の文字はインデックス0から数えるん?




197 :アヌス : 2009/02/19 18:56
それと、assertEquals(0, s.indexOf("U of A")); だったら通らない?
sの中の文字列では、U of Aって文字はインデックス0から始まってるけど・・・


198 :アヌス : 2009/02/19 19:05
もう一つ質問が。hasNext()なんだけど

targetの整数が、scannerの中にいくつあるか調べるために、

Scanner scanner= "1 2 3 4 1 2 3 1 6";
int target;
int count=0;

while(scanner.hasNext()){
if(scanner.nextInt==target)
count++;
}
return count;


このhasNext()の働きがよく理解できないんだ・・・
もしtargetが1なら、scannerの中には1が3つあるから、countが3になるはずなんだけど、
scanner.hasNext()こうすると、scanner.nextIntの中にはインデックス0の数字が代入されてtargetと比較されるってこと?
それともインデックスではなく、自動的に数字が検索されてscanner.nextIntの中に数字が代入されるん?
hasNext()がよくわからないのです・・・


199 :アヌス : 2009/02/19 19:11
またごめん。

もしint型の配列を用意したら、
int a[];
a[i]="";
こういうふうに、int型の配列にスペースはいれられる?スペースって文字扱いになるんだっけ?ならいれられない?

ていうか、"" ←これだとStriingじゃないと無理なのかな。''←これだとchar型のスペース?

int型の配列にスペースをいれる場合、配列をスキップすればいいのかな?

for(int i=0;i<=11;i+=2)
a[i]=1;

こうすれば配列aには、{1 1 1 1 1 1} こういうふうに、数字の間の配列にスペース入れられる?


200 :大和 : 2009/02/20 00:01
>>195
そうそう!
char c = String.valueOf(chars[i]);
↑これだとおそらく型の不一致でエラーでるはず!
つまりもう String 型にちゃんとなってるのだね。

>>196
indexOf() はインデックス 0 から数え始めるから,
U of Arizona
012345

だもんで 5 が返ってくるね!たぶん!

>>197
assertEquals(0, s.indexOf("U of A"));
0 と 0 でイコールなはず!これで緑バーになるはず!


201 :大和 : 2009/02/19 22:49
ちと風呂さ!


202 :大和 : 2009/02/20 10:27
>>198
hasNext() はどうだったかなー(’’。
たしか true を返すんだ。要素の中身がまだある場合に。
格納されてる要素を一つひとつ見てってあれば true,
もうなければ false を返す boolean 型メソッドだなんだ。
ちょっと説明しづらいなこれは!
「java hasNext」でググってみて!これは解説サイトのほうがわかりやすいと思うー。

>>199
そうそうー。スペースは文字扱いだから入れられないね!
""だと String 型になるね〜。
配列 a には {1, 0 ,1, 0 ,1, 0 ,1, 0 ,1, 0 ,1} こう格納されるかな!
int 型の場合の初期値は 0 なんだー。String 型は null だねー初期値。


203 :アヌス : 2009/02/20 13:40
うお
配列スキップしたら0が入るのか・・・何もいれてないから空白かと思った
int 型の配列にスペースなんてきにしたことなかったな・・・


204 :アヌス : 2009/02/20 13:44
ありがとう!かざっさん!!!!


205 :大和 : 2009/02/20 22:51
いえいえ!


206 :アヌス : 2009/02/21 08:04
JAVAの試験だったんですけどね、最後の問題でバカな配列のシフトをしてしまいました・・・
最後の問題点数デカいのに・・・あぁ、・・・オワタ・・


207 :アヌス : 2009/02/21 08:04
   _ρ_
  / ⊥ \
  |____|
  ‖∧ ∧¶  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ( ゚∀゚)/ <  ○○○
   /  /    \_____________
  〈  (
  ∫ヽ__)
    U U
  | ̄ ̄ ̄ ̄|
  \__人__/


208 :大和 : 2009/02/21 10:46
よくがんばった!
あとは結果を待つのみよ〜。


209 :アヌス : 2009/02/24 12:29
ドラゴンボールwwww実写映画ホントにやるのかwww知らなかったwww
http://aromablack5310.blog77.fc2.com/blog-entry-3102.html

ワロタwwwカメハメ波wwww


210 :アヌス : 2009/02/25 20:27
http://panlifeblog.up.seesaa.net/pan/sittori_pinepan.jpg

しっとりパイパンだよ!!!


211 :アヌス : 2009/02/28 17:07
かざっさん。ジョンコンウェイって人が作ったJAVAのgame of lifeって 知ってる?


212 :アヌス : 2009/02/28 17:19
かざっさん。finalって修飾子の使い方ってわかる?なんか・・・よく理解できなくて・・・


213 :大和 : 2009/03/01 07:20
>>211
は,はじめてきいた!

>>212
final はね!変数を,定数にしたい時使うよー。
マジックナンバーとかべた書きって聞いたことあるかなあ。
それを防ぐときに使うんだ定数はー。

円の面積を求めるコード
「3.14」という数は何があっても絶対不変(定数)の数字だから,
べた書きせず,定数を用いたほうが良い。

× 半径 * 2 * 3.14;


final int PI = 3.14;
半径 * 2 * PI;


214 :アヌス : 2009/03/01 11:37
つまり、3.14の意味がわかりずらいからPIってやったほうが、いいってこと?
その値を変えたいとき、複数の値を変えないといけないかもしれないから、マクロ定数のようにやれば、
一度の変更ですむとか。

しかし、それだと単に int PI = 3.14;ってやればいいような気も・・・
final int PI = 3.14とint PI = 3.14の違いってなんでしょう・・・?


215 :アヌス : 2009/03/01 13:33
あれ・・・finalって#defineと一緒・・・?


216 :アヌス : 2009/03/01 14:51
interfaceとimplementsってわかる?これらはfinalとはまったく違う・・・?


217 :大和 : 2009/03/01 15:10
>>214
そうそう!
あと final は勝手に値を変えられなくなるんだー。
勝手に値を書き換えられなくなるよー。

double pi = 3.14;
pi = 3;
// エラーになりません。

final double PI = 3.14;
PI = 3;
// コンパイルエラーが発生します!


>>215
#define って C での定数なんだねー。一緒っぽいっす!

>>216
interface と implements は final とまったく別物だよ!

interface は一言で class のでっかバージョンみたいなもの。
implements はそのでっかい class を宣伝するときに使う言葉なんだー。
こんな使い方をします↓。

class [クラス名] implements [インターフェース名]


218 :アヌス : 2009/03/01 15:16
public interface アナル{

public class アヌス implements アナル{

こんな感じですか。クラスよりデカいということは、クラスを定義する前にinterfaceを定義するってことかな
てことは、interfaceの中にはいくつかのクラスをいれられるってこと?


219 :大和 : 2009/03/01 15:29
>>218
イメージ合ってますあってます!
クラスを定義する前に interface を定義しなければなりません。

あ,interface の中で定義するのは「クラス」ではなく「メソッド」が定義できます。
ごめんね。クラスのでっかいバージョンじゃなくて,親戚みたいな感じって言えば良かったです。
詳しくは↓を参考にしてみてくださいー。

Java講座 [インタフェース、interface]
http://www.site-cooler.com/java/j2se/10_01.htm


220 :アヌス : 2009/03/01 15:29
かざっさん。javaにwraparoundってある?


221 :大和 : 2009/03/01 15:41
>>220
!?
wraparound か。はじめて聞く単語だ。調べてみたけど概念なのだねこれ。
処理可能な範囲の最後まで達したら最初に戻ること,か〜。
このものずばりを体現できるメソッドってあるのか,私にはわからないけど,
for とか if とかメソッド組み合わせれば実現できなくなさそだねー。


222 :アヌス : 2009/03/01 15:46
なるほど。ラップアラウンドするためのなにかがあると思ったんだけど、自分で工夫しないといけないのか。
ありがたう!かざったん!!!


223 :大和 : 2009/03/01 16:07
いえいえ!^ω^


224 :アヌス : 2009/03/01 18:47
かざっさん。String型の配列って、なにも入れなかったら""が入ってるんだっけ?


225 :大和 : 2009/03/01 19:18
あ String 型だと null だねー。
ちなみに int 型は 0 だよ!


226 :アヌス : 2009/03/01 19:22
とすると、配列spaceになにも入ってないって確認するには、

space[row][col].equals(null)

これでいけますよね?


227 :アヌス : 2009/03/01 19:23
で、なにか入ってる配列に、ブランクを入れたい場合、

space[row][col]=null;

これで、その配列にはブランクだけ入ってることになるよね?


228 :大和 : 2009/03/01 19:31
お,いいねーその「ブランク」って言葉。
知らなかった単語だ。もらいました。

>>226
あ!String 型変数ならそれで大丈夫だけど,
配列だとどうだったかなー。
ちょっと調べてみます。

>>227
ああそうそうー null を代入すればいいよ。
配列 space はこれで空っぽです。


229 :大和 : 2009/03/01 19:37
>>228
こんなんあったー。
Arrays クラスの equals() を使うとできるっぽい?ですー。

こんな感じかな
// 配列 space が null なら if 文内の処理を実行します
if (Arrays.equals(space, null)) {}

配列の比較
http://www.ne.jp/asahi/hishidama/home/tech/java/array.html#h2_array_equals


230 :大和 : 2009/03/01 19:38
風呂!


231 :アヌス : 2009/03/01 20:05
if(Arrays.equals(space[row][col], null)
こうすると、nullとはできないって赤線エラーがでる・・・


232 :大和 : 2009/03/01 20:48
じゃだめかー。
他に配列比較できる方法あるかねー。


233 :アヌス : 2009/03/01 20:51
space[row][col].equals(null)

これじゃ できないってこと・・・ですか・・・?


234 :アヌス : 2009/03/01 22:18
2次元配列で、space[10][10]と定義したわけです。インデックスは0〜9になるわけですけど。

今、space[3][0]とspace[3][9]に"O"をいれたわけです。printでちゃんと格納されてると確認しました
ここで、space[3][9]の配列の隣どおしになっている配列全てを見て、"O"が入ってる配列がいくつあるかを調べたいのです
ちなみに、もし方形で簡単に書いたらこんな感じの図になりますのです。

[0][0]..................
[1][0]..................
[2][0]..................[2][8],[2][9],[2][0]
[3][0]..................[3][8],[3][9],[3][0]
[4][0]..................[4][8],[4][9],[4][0]

上でみてわかると思うけど、インデックス0と9はつながっているものとします。だから隣通しになるのです。

space[3][0]にも"O"を入れたから、space[3][9]の周りで"O"が入ってる配列はspace[3][0]だけになります。space[3][9]自身にも"O"は入ってるけど、自身はカウントしません。

なので、space[3][9]の周りの配列をfor文でまわして、

for(int j=nCols-2;j<=nCols-1;j++){
for(int i=row-1;i<=row+1;i++){
if(space[i][j].equals("O"))
count++;

これで調べようとおもったんだけど、実行すると、NullPointerExceptionってエラーがそのif文のところにでるんだ・・・
もしif(space[row][col].equals("O"))っていうふうにiとjをやめるとパスするんだけど、なんでか意味がわからなくて・・・
これっていったいなんでしょう・・・

ちなみに、nColsは縦の配列の大きさで、nRowsは横の配列の大きさで、rowとcolはテストメソッドから引っ張ってくる配列のインデックスです。
上の例では、nColsとrowしかでてないけど・・・
配列の大きさは縦も横は10なので、nCols=10、space[3][9]の周りの配列をしらべたいから、row=3、col=9になります

なので実際のfor文は
for(int j=8;j<=9;j++){ //[2][0],[3][0],[4][0]以外の6つの配列の検索
for(int i=2;i<=4;i++){
if(space[i][j].equals("O"))
count++;
}
}

for(int i=2;i<=4;i++){ //縦のインデックスが0の配列の検索→[2][0],[3][0],[4][0]
if(space[i][0].equals("O"))
count++;
}
count=count-1; //自身もカウントしてるから1引く
}

こんな感じになるのです


235 :アヌス : 2009/03/01 22:23
あ、空っぽでまだ 配列の中身定義してないからか・・・汗

あああああああああああ
だからif(space[row][col].equals("O"))
だと平気なのか。すでに"O"をいれてるから・・・

ええええ。じゃぁどうやって・・・検索すれば・・・


236 :アヌス : 2009/03/01 22:34
かざっさん。例えば、space[2][8]になにも定義してない状態でif(space[2][8].equals("O"))って比較できないの・・・?

なにも定義しなかったらnullになるんじゃ・・・


237 :アヌス : 2009/03/01 22:52
はじめに、すべての配列の要素に””を入れて解決しますた・・・


238 :大和 : 2009/03/02 18:50
おおおうまくいったみたいでよかった


239 :アヌス : 2009/03/02 21:24
なんか間違いとかでる・・・
プログラム自体はうごくのに・・・WebCatに送信したらエラーがたんまり・・・

かざっさん。これおかしい・・・?

public boolean cellAt(int row, int col){
if(space[row][col].equals("O"))
return true;
else
return false;
}

テストメソッドからrowとcolを受け取って実行するんだけど、与えられた2時限配列の中に"O"があればtrue、なければfalseをかえすんだけど・・・
これで動くよね・・・?実際動いてるのに。。。WebCatがエラー返してきやがる・・・
比較がわるいの・・・?これ・・・


240 : : [ここ壊れてます]
[ここ壊れてます]


241 :大和 : 2009/03/03 04:56
ローカルでは動いてるのにWebcatってので動かすとエラーになるのかあ。
なんでだろうねえ・・。


242 :アヌス : 2009/03/03 17:17
100%ゲットしたああああああああああああ!!!
やったああああああああ

マジつかれた もうしぬ


243 :アヌス : 2009/03/03 17:19
俺のテストメソッドでは、ある2つのメソッドを必ず実行しないと期待通りの結果にならなくて、
Webcatでは、1つのメソッドだけで期待通りの結果になることを要求していたらしいのです
今日TAに聞いた・・・

てことで、内1つのメソッドをまたやりなおし(スゲー長くなったけど)、結果できました!!!


244 :アヌス : 2009/03/04 22:57
かざっさん。interface インターフェース名 このってどういう意味ですか?


245 :アヌス : 2009/03/04 23:45
それと、throwsってなんですか・・・?


246 :大和 : 2009/03/05 12:30
>>244
ジェネリクスだよー。
型を限定できます。

>>245
例外を宣伝する際に使う言葉だよー。
クラスやメソッドのあとにつけます。
class A throws Exception {}
public methodA throws Exception() {}



247 :アヌス : 2009/03/05 14:41
型を限定とは・・・?もし(E anal)ってできるの・・・?


248 :大和 : 2009/03/06 17:59
List nameList = new ArrayList();

って感じだね〜。
この場合 String 型しか格納できなくなります。
Integer 型格納しようとするとコンパイルエラーになるよー。


249 :アヌス : 2009/03/07 12:29
http://parasitestage.dip.jp/Page/MediaView.aspx?ID=28713


250 :アヌス : 2009/03/07 12:30
かざっさん!ちょっとまって!整理するっす!


251 :大和 : 2009/03/08 09:17
がんばって!


252 :アヌス : 2009/03/09 14:53
JAVAやる時間が マジでない・・・しかし期限が・・・マジで今回やばいっス!!!
なにやっていいのか理解できん・・・


267 KB
続きを読む

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

read.php ver2.4 2005/04/13