iT邦幫忙

0

求救java,把目前會打得都打出來了

bj6 2020-04-15 20:49:482008 瀏覽
  • 分享至 

  • xImage

https://ithelp.ithome.com.tw/upload/images/20200415/201261127BZf5hYzRj.pnghttps://ithelp.ithome.com.tw/upload/images/20200415/20126112KW1PQTxmtq.png
請問該如何修改?

謝謝幫助!

看更多先前的討論...收起先前的討論...
search方法,傳入的應該是int吧?搜尋可以用for迴圈。
會使用for迴圈遍歷int[],基本上問題就沒有了。

測試的話,除非有要求,我覺得用測試框架比較好,例如JUnit,可以參考良葛格的文章: https://openhome.cc/Gossip/JUnit/
http://tpcg.io/Le82CRWT
bj6 iT邦新手 5 級 ‧ 2020-04-16 11:46:31 檢舉
@fillanofeng
好的,謝謝你

@listennn08
請問「return String.join(" ", Arrays.toString(this.number).split("[\\[\\]]")[1].split(", "));」這句話什麼意思?
Arrays.toString(this.number).split("[\\[\\]]")[1].split(", ")
=> 這行是int array 要轉成 String
但是會 print 出 [ element, element, element] 這樣
所以要用 split 切掉[] 在切, 讓他變成 array
return String.join(" ", Arrays.toString(this.number).split("[\\[\\]]")[1].split(", "))
用 String.join以兩個空格 結合array
bj6 iT邦新手 5 級 ‧ 2020-04-16 17:05:05 檢舉
@listennn08
有沒有比較簡單的寫法?還是陣列轉換成文字都要這樣寫?
然後我「Arrars」的部分都會被劃紅底線,請問是為甚麼?
http://tpcg.io/f47Nj2pj
修改了
因為你沒有引用
直接 import java.util.*;
就可以了
bj6 iT邦新手 5 級 ‧ 2020-04-18 23:42:02 檢舉
@listennn08
喔~好的,謝謝
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
theRookie
iT邦新手 1 級 ‧ 2020-04-16 10:29:47
最佳解答

建個包整個拷貝貼上就可以跑了
有不懂歡迎發問

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;

public class itTest {
	public static void main(String[] args) {
		int[] data = new int[10];
		Random ran = new Random();
		for (int i = 0; i < data.length; i++) {
			data[i] = ran.nextInt(100) + 1;
		}
		BigData bigData = new BigData(data);
		System.out.println("before sort:" + bigData.toString());
		System.out.println(bigData.search(30));
		bigData.sort();
		System.out.println("after sort:" + bigData.toString());
        /**
            before sort:67,50,2,18,19,86,88,6,47,51
            false
            after sort:88,86,67,51,50,47,19,18,6,2
        */
    }

}

class BigData {
	private int[] number;

	public BigData(int[] sample) {
		this.number = sample;
	}

	public boolean search(int data) {
		return Arrays.binarySearch(this.number, data) >= 0;
	}

	public void sort() {
		Arrays.sort(this.number);
		for (int i = 0; i < number.length / 2; i++) {
			int temp = number[i];
			number[i] = number[number.length - i - 1];
			number[number.length - i - 1] = temp;
		}

	}

	public String toString() {
		return Arrays.stream(number).mapToObj(String::valueOf).collect(Collectors.joining(","));
	}
}
package demo;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;

public class itTest {
	public static void main(String[] args) {
		int[] data = new int[10];
		Random ran = new Random();
		for (int i = 0; i < data.length; i++) {
			data[i] = ran.nextInt(100) + 1;
		}
		BigData bigData = new BigData(data);
		System.out.println("before sort:" + bigData.toString());
		System.out.println(bigData.search(30));
		bigData.sort();
		System.out.println("after sort:" + bigData.toString());
	}

}

class BigData {
	private int[] number;

	public BigData(int[] sample) {
		this.number = sample;
	}

	public boolean search(int data) {
		boolean result = false;
		for (int i : number) {
			if (i == data) {
				result = true;
			}
		}
		return result;
	}

	public void sort() {
		int temp;
		for (int i = 0; i < number.length; i++) {
			for (int j = i + 1; j < number.length; j++) {
				if (number[i] < number[j]) {
					temp = number[i];
					number[i] = number[j];
					number[j] = temp; // 讓兩數交換位子
				}
			}
		}

	}

	public String toString() {
		String result = "";
		for (int i : number) {
			result += "," + i;
		}
		return result.substring(1);
	}
}
看更多先前的回應...收起先前的回應...
bj6 iT邦新手 5 級 ‧ 2020-04-16 11:44:04 檢舉

import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
因為我可能還沒有學到那麼深,有什麼可以替換的方法嗎?
return Arrays.binarySearch(this.number, data) >= 0;(例如這行binarySearch是不是內建的方法?)

theRookie iT邦新手 1 級 ‧ 2020-04-16 20:24:01 檢舉

寫了第二種,應該就是新手正解了
for(int i:number)

這東西叫做forEach
很好用的

bj6 iT邦新手 5 級 ‧ 2020-04-18 23:43:22 檢舉

theRookie哈哈,對~謝謝

theRookie iT邦新手 1 級 ‧ 2020-04-21 09:10:37 檢舉

不會,小事

我要發表回答

立即登入回答