顯示具有 java 標籤的文章。 顯示所有文章
顯示具有 java 標籤的文章。 顯示所有文章

2022年4月23日 星期六

java:連續亂數取不重複整數值寫法練習

一、方法一 (利用陣列,並利用list.contains找出與陣列不同的數值)
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class test {
public static void main(String[] args) {
//宣告listData為ArrayList
List<Integer> listData=new ArrayList<>();
//參數1為起始值,參數2為結束值,參數3為要取得的數目數
listData=uniqueNumber(1,15,10);
//System.out.println("增序排序後順序");
Collections.sort(listData);
//用forEach跑迴圈印出清單的數值,看看有沒有取到
listData.forEach((e) -> {
System.out.print("取得的值"+e+"\n");
});
}
//建立某範圍數字不重複取值函式,參數1為起始值,參數2為結束值,參數3為要取得的數目數
public static ArrayList<Integer> uniqueNumber(int startNumber,int endNumber,int counts){
//建立要存值的清單,名稱為number
List<Integer> number=new ArrayList<> ();
// 建立隨機取值的變數randomCount,預設為0
int randomCount=0;
//利用while迴圈決定跑幾次,當清單的長度小於你設定的值就,執行裡面的程式
while(number.size()<counts){
//設定亂數,範圍為由startNumber至endNumber間的數字
randomCount=(int)(Math.random()*(endNumber-startNumber))+startNumber;
//假如number清單中沒有包含此亂數值,就將新值加入新的清單
if(!number.contains(randomCount)){
number.add(randomCount);
};
}
//回傳清單

return (ArrayList<Integer>) number;
}
}

二、方法二  (利用hashmap key值不重複的原理排除重複值)

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Set;

public class test4{
public static void main(String[] args) {
//宣告listData為ArrayList
List<Integer> listData=new ArrayList<Integer>();
//參數1為起始值,參數2為結束值,參數3為要取得的數目數
listData=uniqueNumber(1,15,10);
//用forEach跑迴圈印出清單的數值,看看有沒有取到
listData.forEach((e) -> {
System.out.print("取得的值"+e+"\n");
});
}
//建立某範圍數字不重複取值函式,參數1為起始值,參數2為結束值,參數3為要取得的數目數
public static List<Integer> uniqueNumber(int startNumber,int endNumber,int counts){
//創建HashMap為HashMap<Integer, Integer>
HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();
//返回hashMap鍵值的 set
Set<Integer> keySet = hashMap.keySet();
int randomCount=0;
//當hashMap清單的長度小於你設定取得的數量,就執行裡面的程式
while(hashMap.size()<counts){
//取得變數
randomCount=(int)(Math.random()*(endNumber-startNumber))+startNumber;
//透過for決定要跑幾次迴圈,迴圈跑的次數是(你設定取得的數量-目前已有的haspmap數量)
//,因為主鍵值相同會覆蓋,所以不用排除,如果不夠就重跑上一層的while,直到滿足需要的次數
for(int i=0;i<(counts-hashMap.size());i++){
//把每次的隨機取出值加入,後面的值應該就是隨便都可以,這裡設定的是1.....到你要的次數。
hashMap.put(randomCount, i+hashMap.size());
}
}
//建立number清單,並將Haspmap主鍵存入
List<Integer> number = new ArrayList<Integer>(keySet);
//將清單利用Collections.sort排序
Collections.sort(number);
return number;
}
}

三、方法三(只透過for while 和if迴圈)

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class test1{
public static void main(String[] args) {
//宣告listData為ArrayList
List<Integer> listData=new ArrayList<Integer>();
//參數1為起始值,參數2為結束值,參數3為要取得的數目數
listData=uniqueNumber(1,15,10);
//用forEach跑迴圈印出清單的數值,看看有沒有取到
listData.forEach((e) -> {
System.out.print("取得的值"+e+"\n");
});
}
//建立某範圍數字不重複取值函式,參數1為起始值,參數2為結束值,參數3為要取得的數目數
public static List<Integer> uniqueNumber(int startNumber,int endNumber,int counts){

//宣告number為ArrayList清單

List<Integer> number=new ArrayList<>();

int randomCount=0;
//當hashMap清單的長度小於你設定取得的數量,就執行裡面的程式
while(number.size()<counts){
//設定一布林值變數,用以判斷是否要存入變數
Boolean check=true;
//取得變數
randomCount=(int)(Math.random()*(endNumber-startNumber))+startNumber;

//透過迴圈,將number清單目前有的資料取出
for(int i=0;i<number.size();i++){
//比對亂數和清單的所有值相同,如相同就執行裡面的程式
if(randomCount==number.get(i)){
//設定檢查值為否
check=false;
}
}
//假如check為真才存入
if(check==true){
number.add(randomCount);
}
}
//將清單值排序
Collections.sort(number);
return number;
}
}

2022年4月22日 星期五

android studio:字串處理的一些方法

有時候,取回來的文字資料,需要進行適當的處理,才可以再度利用,這時候就會用到java處理文字的方法。

(1)replace 用新的數值取代字串中的舊數值

String Text="這個字是a,要取代成b";
//以參數2的文字取代參數1的文字,只可替換文字
Text.replace("a","b");
//以參數2的值取代參數1的值,可替換其它如空白、\\d等參數式,此範例為將兩個空白取代成一個空白
Text.replaceAll(" "," ");
//只更換第一個,以參數2的值取代參數1的值,可替換其它如空白、\\d等參數式,此範例為將兩個空白取代成一個空白
Text.replaceFirst(" "," ");

(2)split 將有固定分隔號的字串,轉為清單形式
String Text="3 4 5";
//利用空格將字串分成[3,4,5],這樣利用取得清單的方式取得其中的某個值,中間要加中括號
Text.split("[ ]");
String[] words = Text.split("[ ]");
//遇特殊的符號,正則運算式,要加兩個反斜線\\,這很重要
List<String> list2=new ArrayList();
list2= Arrays.asList(Text.split("[ ]"));

如果要區隔的元件是正則表示式,像是.(連接符號)、^(限制開頭),要加兩個反斜線

(3)substring 取出某個位置到某個位置的字串
String str="我是一個天才";
//參數1是要取值的第一個位置,第二個是結束的位置,這個位置不包含第一個位置,以下取得"是"
str=str.substring(1,2);
//參數1是要取值的第1個位置,後面沒有設,因此到結尾,以下取得"一個天才"
str=str.substring(2);
//參數1為第1個位置,參數2為你要搜尋的那個字位置,以下取得"一個天"
str=str.substring(2,str.indexOf("才"));

(4)indexOf 搜尋某個字串的位置
String str="我是一個天才,你也是一個天才";
//參數一為你要搜尋的字串,搜尋字串"一"出現的第一位置
str.indexOf("一");
//參數一為你要搜尋的字串,參數二是搜尋的起始點,此為由第4個位置開始,搜尋字串"一"出現的第一位置
str.indexOf("一",4);
//參數一為你要搜尋的字串,搜尋字串"一"出現的最後一個位置
str.lastIndexOf("一");

(5)charAt
String str="我是一個天才,你也是一個天才";
//參數一為你要搜尋的位置,以下為搜尋第5個位置,得到的值為"天"
str.charAt(5);

(6)startsWith和endsWith

String str="我是一個天才,你也是一個天才";
//參數一為你要搜尋的前綴字串,傳回值為布林值,若符合是真,不符合是假"
str.startsWith("我是");
//參數一為你要搜尋的後綴字串,傳回值為布林值,若符合是真,不符合是假"
str.endsWith("天才");

(7)concat 連接兩個字串

string1.concat(string2); //以下連接string1和string2兩個字串


(8)compareTo 比較兩個字串的長度值,返回值為int,此int為兩個字串的長度差


(9)trim 去除字串前後的空白

String String = new String("   www.xxx.com    ");
String.trim(); //去除字串前後的空白

(10)contains 判斷字串裡是否包含某字串,若有則會傳回true值。
String string = "這是一個測試";
boolean b=string.contains("是"); //傳回True值

參考網頁:https://www.runoob.com/java/java-string.html
               https://www.w3schools.com/java/java_strings.asp


2022年3月16日 星期三

android studio:List(Array、ArrayList、LinkedList )說明


List是所謂的陣列類別,是儲存資料的一種方式。在Android Studio中,只有介面,沒有實作,而若要實作,則要使用List下 ArrayList與Array及LinkedArray等類別。

一、ArrayList是一個List的子類別,可具體化,它與Array不同,它的大小可以改變,而因為裡面的元素很多,因此可以採用泛型的方式建立物件,不用先指定ArrayList()<>裡的元素類型,因為它是用Object[] elementData的方式運作,其中的元素必須是物件類型。

(一)新建ArrayList的方式如下:(1 2利用了ArrayList可泛型的特性,不給予元素類型)
1.以下四種方式皆可:
List arrayList= new ArrayList() //宣告arrayList為List類型的物件
ArrayList arrayList= new ArrayList(); //宣告arrayList為arrayList類型的物件
ArrayList<String> arrayList=new ArrayList<>(); //定義陣列的第一個值是String類型
ArrayList<String> arrayList=new ArrayList<String>(); //原兩邊都要寫類型,JAVA SE7後改成可省略。

2.原不可以加原始類型:
ArrayList<int> arrayList = new ArrayList<int>(); //這種寫法會報錯,因為int是原始型別
ArrayList<Integer> arrayList= new ArrayList<Integer>();  //可透過一些重新包裝的類別,進行宣告


(二)加入ArrayList陣列值的方法 .add("想加入的資料")
在此列表中的指定位置插入指定的元素。參數說明:index為要值入的位置,element為要插入的值,若沒有加入位置,則插入最後一個位置。

arrayList.add("1");
arrayList.add("2");
arrayList.add("3");


(三)取得ArrayList陣列值的方法 .get(int index);返回此列表中指定位置的元素。
arrayList.get(0); //取得陣列1的值
arrayList.get(1); //取得陣列2的值
arrayList.get(2); //取得陣列3的值


(四)計算陣列的長度 .size()
arrayList.size();

(五)查詢是否有某特定的值,有則回傳真,沒有為假 .contains() 
arrayList.contains(1);

(六)查詢某特定值位於那一個陣列中 indexOf()
arrayList.indexOf(1);


(七)刪除特定元素 .remove(1)
arrayList.remove(1);


(八)判斷是否為空 isEmpty()
arrayList.isEmpty();


(九)清除陣列所有資料 .clear()
arrayList.clear();

延伸連結:https://www.w3schools.com/java/java_arraylist.asp

二、Array陣列

Array是一個較為簡潔的List,它在宣告時要先給予大小,因為若你一開始就確定你陣列中要放幾個元素,就可以使用Array,裡面可以儲存原始類別及物件,
(一)新建的方法
String[]  array= new String[10]; //宣告一個類型為String的陣列,空間為11,0也算一個
int[]  array= new int[10]; //宣告一個類型為int的陣列,空間為11,0也算一個
int[]  array=new int[]{5,7,8}; // 新建一個int[]實體,並直接給賦值
int[]  array={5,7,8}; //直接給賦值


(二)加入陣列值的方法
可直接利用[陣列位置]將陣列的值加入
String[]  array= new String[2];
array[0]="第一個";
array[1]="第二個";

也可以在新建的時候直接加入
String array[] = new String[]{"第一個","第二個"};
int array2[] = new int[]{1,2};

(三)替換的方法,基本上透過[陣列位置]加上=來直接更換裡面的數值
array[0]="換的第一個";
array[1]="換的第二個";
(四) 搜尋數組中的某一個值的位置,找不到會回傳-1
Arrays.binarySearch(陣列,要搜尋的值);



延伸連結:https://www.w3schools.com/java/java_arrays.asp

三、Array和ArrayList兩個資料互換的方法
(1)arrayList轉成list,利用toArray方法,如下:
int size =list.size();
String[] array = list.toArray(new String[size]);  //轉換時要給予array空間大小,因此要先計算原來的ArrayList的空間大小。

(2)list轉成arrayList,利用asList方法,如下:
List<String> list=Arrays.asList(array); //arrayList不用管空間大小,因此利用asList方法將資料一個一個放進ArrayList就可以了。
 

四、LinkedList
LinkedList也是一個寫好的List類別,和ArrayList的差別在於,LinkedList裡儲存的陣列資料,可以排序,因此有一些需要排序才能運用的功能,使用LinkedList會比較方便,如指定新增最後一項資料,又如指定新增第一項資料等。

(一)新建LinkedList的方法如下:
不加陣列類型
LinkedList linkedList=new LinkedList();
加入陣列類型
LinkedList<String> linkedList2=new LinkedList<>();

(二)加入陣列的資料
linkedList.add("新增某一項"); //新增某一項
linkedList.addFirst("新增第一項"); //新增新一項
linkedList.addLast("新增最後一項"); //新增最後一項


(三)移除陣列的資料
linkedList.remove("某一項"); //移除某一項
linkedList.removeFirst(); //移除第一項
linkedList.removeLast(); //移除最後一項

(四)取得陣列資料
linkedList.get(0); //取得某一項
linkedList.getFirst(); //取得第一項
linkedList.getLast(); //取得最後一項

延伸連結:https://www.w3schools.com/java/java_linkedlist.asp

 














2021年11月21日 星期日

android studio學習整理

一、基本名詞

JDK Java Development Kit(JDK) 昇陽科技提供給java開發者的免費軟體開發套件(SDK)
JRE Java Runtime Environment (JRE) JAVA執行的環境。
JVM Java Virtual Machine 可以執行java bytecodeh的虛擬機器。

一個Java程式的開發者需要透過JDK寫程式,而後在建有JRE環境的系統裡的虛擬機器中運作寫好程式。

IDE:整合開發環境(Integrated Development Environment,簡稱IDE,也稱為Integration Design Environment、Integration Debugging Environment)IDA是一種工具,將程式要做的工作整合在一個環境中,方便開發者使用。如Android Studio、Visual Studio Code、IntelliJ IDEA都是IDE。


AVD:Android Virtual Device,以Android系統運行的虛擬設備,與上面提到的JVM相似。


SDK:軟體開發套件(英語:Software Development Kit, SDK)指一些被軟體工程師用於為特定的軟體套件、軟體框架、硬體平台及作業系統等建立應用軟體的開發工具之集合。 它或許只是簡單的為某個程式語言提供應用程式介面的一些檔案,但也可能包括能與某種嵌入式系統通訊的複雜的硬體。


DSL 其實是 Domain Specific Language 的縮寫,中文翻譯為領域特定語言。GPL 是 General Purpose Language 的簡稱,即通用程式語言
openssl OpenSSL是一個開放原始碼的軟體函式庫套件,應用程式可以使用這個套件來進行安全通訊,避免竊聽,同時確認另一端連線者的身分。這個套件廣泛被應用在網際網路的網頁伺服器上。


compileSdk、minSdk、targetSdk到概念
https://codertw.com/程式語言/751107/


二、android studio配置說明

build.Gradle 介紹  https://ithelp.ithome.com.tw/articles/10129873


build.gradle說明(android studio 在使用時的基本配置,如使用編輯的版本,以及要匯入的程式庫)
https://www.itread01.com/content/1545011126.html

constrainlayout版面的說明
https://jchu.cc/2017/09/16-constraintlayout.html

三.基本程式寫法(java)

1.基礎影片(詳細的影片,看完後,會有大概的基礎能力)

雷宇資訊

https://www.youtube.com/channel/UC0y81iyJdnqWEGWcCeAE7Uw

天哥在奔跑

https://www.youtube.com/watch?v=sehxt5wbsgM&list=PLoDvOw64tSYsWvlxk9aIDOGPVrFQeHull

文本

https://wiki.jikexueyuan.com/list/android/


2.alertDialog對話框的說明及教學
https://www.cnblogs.com/Gaojiecai/archive/2011/12/10/2283156.html
https://www.runoob.com/w3cnote/android-tutorial-alertdialog.html


資料庫連結

1. 如何連接mysql

資料庫儲存實作範例

https://ithelp.ithome.com.tw/articles/10215767

https://mnya.tw/cc/word/1480.html (這位作者寫的最清楚)

Android stuidio连接mySql数据库之踩坑篇(一些可能產生的問題)

https://blog.csdn.net/qq_29226403/article/details/103214832?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&utm_relevant_index=2

 app連接mysql

https://blog.csdn.net/weixin_44338074/article/details/110769001?spm=1001.2014.3001.5501


連結firebase的方法

如何連接firebase,並用google登入等資訊

https://firebase.google.com/docs/auth/android/password-auth?hl=zh-CN#java_1



三、用手機模擬
https://mnya.tw/cc/word/1458.html




五、廣播使用方法
https://xnfood.com.tw/android-broadcastreceiver/




七、kotlin 教學

https://ithelp.ithome.com.tw/articles/10203008


docker 上安裝mysql
https://ithelp.ithome.com.tw/articles/10272193


kotlin透過php串接mysql
https://www.youtube.com/watch?v=X8oD4q3XtQQ


kotlin連接access
https://www.itread01.com/content/1544786947.html

如何更新gradle
https://www.cnblogs.com/luoruiyuan/p/6527995.html


棄用方法修正
https://stackoverflow.com/questions/62671106/onactivityresult-method-is-deprecated-what-is-the-alternative

https://ithelp.ithome.com.tw/articles/10265581?sc=iThomeR



google帳號登入教學
https://thumbb13555.pixnet.net/blog/post/333799906-googlesignin

https://ithelp.ithome.com.tw/articles/10215935


https://lynn5133.pixnet.net/blog/post/463127129-%3C%3Candroid-app%3E%3E%E5%88%A9%E7%94%A8google%2B-%E4%BE%86%E5%81%9A%E7%99%BB%E5%85%A5%E7%9A%84%E5%8B%95%E4%BD%9C%E3%80%81%E5%BE%9Eandr




sha1產生方法

點開gradle project
【Android开发】Android Studio 的 Gradle Task 没有显示的问题

六、anko 說明

https://www.twblogs.net/a/5cdb2c26bd9eee67a77fdd2f

viewblinding使用說明

https://happyphoebe40090.medium.com/google-course-android-basics-in-kotlin-第5篇-viewbinding-183388315083


anko 使用說明(回家看)

Kotlin之UI篇 | IT人 (iter01.com)


2.使用Anko Layout建立第一個App
https://zongjia.blogspot.com/2018/01/kotlinandroid01-anko-layoutapp_29.html?m=1


anko 較完整說明(已被棄用)
https://codertw.com/程式語言/90327/ 

onclick 和setOnClickListener的差別

https://codertw.com/android-%E9%96%8B%E7%99%BC/342645/


使用相機照片,及使用相簿照片

kotlin

https://www.youtube.com/watch?v=xZZQ5q5pOp0

java

https://www.youtube.com/watch?v=LpL9akTG4hI

https://codertw.com/android-%E9%96%8B%E7%99%BC/338565/



圖片移動與縮放教學

https://codeqingyun.com/article/80109050/


使用webview,並利用此方法進行google 搜尋

https://stackoverflow.com/questions/16955560/how-to-show-android-google-default-search-results-in-webview

鍵盤收納:https://blog.csdn.net/ccpat/article/details/46717573


webview詳解

https://www.itread01.com/content/1547697428.html


calendar 日曆

https://oldgrayduck.blogspot.com/2012/07/android.html?m=0


okhttp連線及json解析

https://ithelp.ithome.com.tw/articles/10188600

https://www.jianshu.com/p/d006bc55bca9

https://thumbb13555.pixnet.net/blog/post/314662580

https://codertw.com/程式語言/302813/


animation(動畫)

https://www.youtube.com/watch?v=fqU4zc_XeX0

https://ithelp.ithome.com.tw/articles/10201802

https://wiki.jikexueyuan.com/project/android-animation/7.html


側滑選單

https://thumbb13555.pixnet.net/blog/post/322047734-drawerlayout_and_navigationview

多頁面設計與資料傳遞

https://www.youtube.com/watch?v=8BJR7yt93Lw&t=1732s

as按鈕背景顏色無法更改
https://www.gushiciku.cn/pl/g8Yq/zh-tw


語音辨識
https://codertw.com/android-開發/353697/
https://a0973378273.pixnet.net/blog/post/356790422-android啟動google語音辨識的兩個方法
https://ruyut.app/?p=11 (這比較簡單)

其它:這人寫的文章淺顯很容易懂,很厲害的人。
https://xnfood.com.tw/category/android-工作筆記/