1. 程式人生 > >java初學基礎班經典練手小程式300例

java初學基礎班經典練手小程式300例

本文轉載於http://blog.sina.com.cn/s/blog_7192f33401016v43.html

一.函式
1.
*************************************************************************************************************************************
程式設計題:
 定義一個功能,完成對考試成績的等級劃分。
 90~100 優秀
 80~89 良好
 70~79 中等
 60~69 及格
 60以下 不及格

class  Test04
{
 public static void main(String[] args)
 {
  char level =getLevel(78);
  System.out.println("level="+level);
 }

//第二種方法:因為return是個變數,我們可以定義一個變數chr來表示return 然後返回到這個變數就行了。

   public static char getLevel(int num)
  {

   char chr;
   if(num>=90 && num<=100)
   chr= 'a';
  else if(num >=80 && num<=89)
   chr= 'b';
  else if(num >=70 && num<=79)
   chr= 'c';
  else if(num >=60 && num<=69)
   chr= 'd';
  else
   chr='e';
   return chr;
  }
     
}


二.陣列

***********************************************************************************************************************************
1.獲取一個數組中的最值???
***********************************************************************************************************************************


 
 //先遍歷陣列,然後再這個遍歷裡面加上條件語句,然後再找出最大值,遍歷一般都用for語句,這個以後記著了

主函式中的寫法:

public static void main(String[] args)
 {
  int [] arr={22,23,34,56,76,23};
  int max=getMax(arr);
  System.out.println("max="+max);
 }

程式寫法:

不加註釋的寫法:
public static int getMax(int [] arr)
 {
  int max =arr [0];
  for (int x=1;x<arr.length;x++ )
  {
   if (arr[x]>max)
   {
    max =arr[x];
    
  }
   return max;
 }

加完註釋的寫法:
public static int getMax(int[] arr)
 {
  //1,定義變數用於記錄住每次比較完較大的值,初始化為陣列中的任意一個元素。
  int max = arr[0];

  //2,對陣列元素進行遍歷。
  for(int x=1; x<arr.length; x++)
  {
   //3,將遍歷到的元素和變數中儲存的元素進行比較。將大的值儲存到變數中。
   if(arr[x]>max)
    max = arr[x];
  }
  return max;
 }

***********************************************************************************************************************************
2.對一個數組進行遍歷?????????????????
***********************************************************************************************************************************
主函式中的呼叫:
int [] arr={36,23,55,65,23,45,65,32};
  printArry(arr);

函式的書寫:
public static void printArry(int [] arr)
 {
   for (int x=0;x<arr.length ;x++ )
  {
   if (x!=arr.length-1)
   System.out.print(arr[x]+".");
   else
   System.out.print(arr[x]);
  }
   
 }

***********************************************************************************************************************************
3.對陣列中的位置進行置換?????????????????
***********************************************************************************************************************************
public static int swap(int []arr,int a,int b)
 {
  int temp=arr[a];
  arr[a]=arr[b];
  arr[b]=temp;
 }

***********************************************************************************************************************************
4.定義一個輸出語句?????????????????
***********************************************************************************************************************************
public static void sop(String str)
 {
  System.out.println(str);
 }

***********************************************************************************************************************************
5.使用選擇排序法對陣列進行排序?????????????????
***********************************************************************************************************************************
//選擇排序
 

    public static void selectSort(int [] arr)
 {
  for (int x=0;x<arr.length-1 ; x++)
  {
   for(int y=x+1;y<arr.length;y++)
   {
    if (arr[x]>arr[y]) //假如把這個>號換個方向,那麼它的排序後的順序就換了。
    {
     swap(arr,x,y);
    }
   }
  }
 }

public static void sop(String str)
 {
  System.out.println(str);
 }

public static void swap(int []arr,int a,int b)
 {
  int temp=arr[a];
  arr[a]=arr[b];
  arr[b]=temp;

 }


public static void printArry(int [] arr)
 {
   for (int x=0;x<arr.length ;x++ )
  {
   if (x!=arr.length-1)
   System.out.print(arr[x]+".");
   else
   System.out.println(arr[x]);
  }
   
 }

***********************************************************************************************************************************
6.使用氣泡排序法對陣列進行排序?????????????????
***********************************************************************************************************************************

主函式呼叫如下:
int [] arr={36,23,55,65,23,45,65,32};
  sop("排序前");
  printArry(arr);
  sop("排序後");
  bubbleSort(arr);
  printArry(arr);


程式如下:
 public static void bubbleSort(int[] arr)
{
  for (int x=0;x<arr.length-1 ;x++ )
 {
  for (int y=0;y<arr.length-1-x ;y++ )
  {
   if (arr[y]<arr[y+1])
   {
    swap(arr,y,y+1);
   }
   
  }
 }
}
***********************************************************************************************************************************
7.對陣列中的元素進行反轉?????????????????
***********************************************************************************************************************************


程式如下:
  public static void reverseArry(int[] arr)
  {
   for (int start=0,end=arr.length-1 ;start<end; start++,end--)
   {
    swap(arr,star,end);
   }

  }

***********************************************************************************************************************************
8.演示二分查詢法????????????????
***********************************************************************************************************************************
 
 public static int binarySearch(int[] arr,int key)
 {
  //1,需要定義三個變數,用於記錄住角標的變化。
  int min,max,mid;
  min = 0;
  max = arr.length-1;
  //只要min和max之間有距離,就有了折半的可能,而且有可能折半多次,使用while迴圈。。
  while(min<=max)
  {
   //獲取中間角標。
   mid = (max+min)/2;    //mid = (max+min)>>1;

   //獲取中間角標上的元素和key進行比較。
   //來確定min和max的新值。或者叫做,確定新的查詢範圍。
   if(key>arr[mid])
    min = mid + 1;
   else if(key<arr[mid])
    max = mid - 1;
   else
    return mid;
  }
  return -1;
 }


***********************************************************************************************************************************
9.找一個數組中查詢一個元素的第一次出現的位置????????????????
***********************************************************************************************************************************


 public static int getIndex(int[] arr,int key)
 {
  for(int x=0; x<arr.length; x++)
  {
   if(arr[x]==key)
   return x;
  }
  return -1;
 }


***********************************************************************************************************************************
10.陣列中查表法的應用--通過使用者的指定星期數字,返回給使用者對應的星期中文或者英文.????????????????
***********************************************************************************************************************************


class ArrayTest3
{
 public static void main(String[] args)
 {

  String week = getWeekText(8);//這句話輸出的結果是星期幾,這個輸出的是字串的型別的,所以應該使用字串來表示,不能夠使用int來表示。
  System.out.println("week="+week);
 }

 
 public static String getWeekText(int num)
 {

  if(num>7 || num<1)
  {
   return num+"沒有對應的星期";
  }
  String[] weeks = {"","星期一","星期二","星期三","星期四","星期五","星期六","星期日"};//寫一個包含星期的陣列,這個陣列的下標一定要是有順序的。

  return weeks[num];
 }
}

***********************************************************************************************************************************
11.對二維陣列進行求和??????????????
***********************************************************************************************************************************

class  Arry2Test
{
 public static void main(String[] args)
 
  int arr[] []={{22,33,12,32},{23,54,12,11},{65,87,89,23}}
  int sum=0;
  //先遍歷陣列,然後再求和
  for (int x=0;x<arr.length;x++)
  {
   for (int y=0;y<arr[x].length ;y++)
   {
    sum=sum+arr[x][y];
   }
  }
  System.out.println("sum="+sum)
 }
}

三、執行緒

四、集合

***********************************************************************************************************************************

1.string的一些練習??????????????

***********************************************************************************************************************************

String str = "abnbacd";

String s = str.replace("nba", "haha");

System.out.println("s="+s);

System.out.println(str);

char[] chs = str.toCharArray();//將字串轉成字元陣列。

boolean b = str.contains("Demo");

System.out.println("b="+b);

boolean b1 = str.endsWith(".java");

str = "zhangsan,lisi,wangwu";

String[] names = str.split(",");

for (int i = 0; i < names.length; i++) {

System.out.println(names[i]);

}

str = "     ab   c     ";

str = str.trim();

System.out.println("-"+str+"-");

********************************************************************************************************************************

2.獲取一個子串在字串中出現的次數。"nbawernbatyunbaidfnbaghjnba" nba出現了幾次??????????????+1

***********************************************************************************************************************************

package cn.itcast.api.p2.string.test;

public class StringTest2

{

public static void main(String[] args)

{

String s1 = "nbawernbatyunbaidfnbaghjnba";

String key = "nba";

int count = getSubCount(s1, key);

System.out.println(key + ",count=" + count);

String s2 = "abcde";

s2 = reverseString(s2);

System.out.println("reverse:" + s2);

}

public static String reverseString(String str)

{

// 1,將字串轉成字元陣列。

char[] chs = str.toCharArray();

reverseArrary(chs);

return new String(chs);// 通過構造器將字元陣列轉成字串。

}

private static void reverseArrary(char[] chs)

{

for (int start = 0, end = chs.length - 1; start < end; start++, end--)

{

swap(chs, start, end);

}

}

private static void swap(char[] chs, int start, int end)

{

char temp = chs[start];

chs[start] = chs[end];

chs[end] = temp;

}

public static int getSubCount(String str, String key)

{

// 1,定義變數,一個是計數器,一個是記錄位置。

int count = 0;

int index = 0;

// 2,呼叫indexOf方法獲取key出現的位置。

while ((index = str.indexOf(key, index)) != -1)

{

index = index + key.length();

count++;

}

return count;

}

}

***********************************************************************************************************************************

3.獲取兩個字串中最大相同子串。

* 如:"rtyuicctvoprtyu"

*         "cvbcctvnm"  最大相同是cctv?????????????? +1

***********************************************************************************************************************************

package cn.itcast.api.p2.string.test;

public class StringTest4 {

public static void main(String[] args) {

String s1 = "rtyuicctvoprtyu";

String s2 = "cvbcctvnm";

String maxsub = getMaxSubstring(s2,s1);

System.out.println("maxsub="+maxsub);

}

public static String getMaxSubstring(String s1, String s2) {

String max,min;

max = s1.length()>s2.length()?s1:s2;

min = max.equals(s1)?s2:s1;

// System.out.println("max="+max+",,min="+min);

for(int x=0; x<min.length(); x++){

for(int y=0,z=min.length()-x; z!=min.length()+1; y++,z++){

//獲取s2子串

String temp = min.substring(y,z);

// System.out.println(temp);

if(max.contains(temp)){//s1.indexOf(temp)!=-1

return temp;

}

}

}

return null;

}

}

***********************************************************************************************************************************

4,對這個字串陣列進行字典順序的排序。

* {"aaa","abc","cba","nba","qq","zz"}??????????????

***********************************************************************************************************************************

package cn.itcast.api.p2.string.test;

public class StringTest5 {

public static void main(String[] args) {

String[] strs = {"cba","abc","nba","zz","qq","aaa"};

sortString(strs);

for (int i = 0; i < strs.length; i++) {

System.out.print(strs[i]+",");

}

}

public static void sortString(String[] strs) {

for (int i = 0; i < strs.length-1; i++) {

for (int j = i+1; j < strs.length; j++) {

if(strs[i].compareTo(strs[j])>0)

swap(strs,i,j);

}

}

}

private static void swap(String[] strs, int i, int j) {

String  temp = strs[i];

strs[i] = strs[j];

strs[j] = temp;

}

public static void sort(int[] arr){

for (int i = 0; i < arr.length-1; i++) {

for (int j = i+1; j < arr.length; j++) {

if(arr[i]>arr[j]){

swap(arr,i,j);

}

}

}

}

private static void swap(int[] arr, int i, int j) {

int temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

}

}

***********************************************************************************************************************************

5. "34 9 -7 12 67 25"要求對這個字串中的數值進行從小到大的排序,??????????????(很重要)

***********************************************************************************************************************************

package cn.itcast.api.p2.wrapper.test;

import java.util.Arrays;

public class WrapperTest2 {

private static final String SPACE = " ";

public static void main(String[] args) {

String str = "34 9 -7 12 67 25";

str = sortStringNumber(str);

System.out.println(str);

}

public static String sortStringNumber(String str) {

//1,將字串中的數值通過指定的規則進行切割獲取字串陣列。

String[] str_nums = toStringArray(str);

//2,將字串陣列轉成int陣列。 

int[] nums = toIntArray(str_nums);

//3,對int陣列排序;

sortIntArray(nums);

//4,將int陣列變成字串。 

return arrayToString(nums);

}

private static String arrayToString(int[] nums) {

//1,建立字串緩衝區。

StringBuilder sb = new StringBuilder();

for (int i = 0; i < nums.length; i++) {

if(i!=nums.length-1)

sb.append(nums[i]+SPACE);

else

sb.append(nums[i]);

}

return sb.toString();

}

private static void sortIntArray(int[] nums) {

Arrays.sort(nums);

}

private static int[] toIntArray(String[] str_nums) {

//1,先定義一個int陣列。 

int[] arr = new int[str_nums.length];

//2,對字串陣列進行遍歷。

for (int i = 0; i < str_nums.length; i++) {

//將陣列格式的字串轉成整數。儲存到arr陣列中。 

arr[i] = Integer.parseInt(str_nums[i]);

}

return arr;

}

private static String[] toStringArray(String str) {

return str.split(SPACE);

}

}

***********************************************************************************************************************************

1.string的一些練習??????????????

***********************************************************************************************************************************

***********************************************************************************************************************************

1.string的一些練習??????????????

***********************************************************************************************************************************

五、IO操作

********************************************************************************************************************************