();
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やる時間が マジでない・・・しかし期限が・・・マジで今回やばいっス!!!
なにやっていいのか理解できん・・・
253 :アヌス : 2009/03/09 15:51
かざっさん。今回の課題の一部のメソッド(throwとObject[])についてききたいっす!
今回はなんか、Abstract Data Typesなんてのやるみたいなんだけど、意味わかんないのですよ。知ってます?
配列の中の優先順位がどうのこうのって・・・
今回インターフェース使うんだけど、こんな感じ↓
public interface PriorityList {
配列の要素のサイズを返す
public int size();
もし配列になにも入ってなければ(size=0なら)trueを返す
public boolean isEmpty();
もし可能なら、与えられた配列のインデックスにelの値を入れる。もし配列のサイズを超えたら、IligalArgumentExceptionをthrowsする。
例)もしサイズが3なら、可能なインデックスの値は、0、1、2、3である
public void insertElementAt(int index, E el) throws IligalArgumentException;
↑これがよくわからんのですけど、サイズが3ならインデックスは2までだけど、もしインデックスが3になったらどうやってIligalArgumentExceptionをthrowsするんでしょうか・・・
もし可能なら、与えられたインデックスの要素への参照を返す(?)。配列の外ならIlligalArgumentExceptionをthrows
例)この場合、サイズが3なら可能なインデックスは0、1、2である
public E getElementAt(int index) throws IlligalArgumentException;
もし可能なら与えられたインデックスの要素を消す。もしインデックスが配列の外ならIlligalArgumentExceptionをthrowsする
public void removeElementAt(int index) throws IlligalArgumentException;
もし可能なら、与えられたインデックスの要素の中身とその隣(index+1)の要素をスワップする。配列の外ならIlligalArgumentExceptionをthrowsする
インデックスsize()-1の要素のpriorityが一番低ければスワップせんでよし
public void lowerPriorityOf(int index) throws IlligalArgumentException;
もし可能なら与えられたインデックスの要素と隣(index-1)の要素をスワップする。インデックス0の要素のpriorityが一番高ければスワップでせんでよし
インデックスが配列の外ならIlligalArgumentExceptionをthrows
public void raisePriorityOf(int index) throws IlligalArgumentException;
Objectの配列の中にある要素のコピーを全て同じ順番で返す。もしなにもなければ、new Object[0]を返す
public Object[] toArray();
もし可能なら与えられたインデックスの要素をリストの最後に移動する。与えられた要素が最後のインデックスならやらんでよし。
インデックスが配列の外ならIlligalArgumentExceptionをthrows
public void moveToLast(int index) throws IlligalArgumentException;
もし可能なら与えられたインデックスの要素をリストの最初に移動する
インデックスが配列の外ならIlligalArgumentExceptionをthrowsする
public void moveToTop(int index) throws IlligalArgumentException;
}
ほとんどにthrows IligalArgumentException;がついてるのです。
254 :アヌス : 2009/03/09 17:00
IlligalArgumentExceptionのテストメソッドはこんな感じらしい・・・です・・・
もしインデックスが配列のサイズを1超えたら↓
@Test(expected = IlligalArgumentException.class)
public void testInsertThrowsAnException(){
ArrayPriorityList list = new ArrayPriorityList();
list.insertElementAt(0, "1st");
list.insertElementAt(1, "2nd");
list.insertElementAt(2, "3rd");
}