java學習整理二


1、定義一個66列的二維整型數組,輸出該二維數組中的每行和每列的最大值、最小值、和平均值。(知識點:數組的創建、初始化和元素訪問)

要求:(1)數組元素的值隨機產生,大小為2099之間;

       2)輸出結果按下面表格的形式輸出。每行,每列后面輸出和、平均值、最大值和最小值,其中平均值保留小數點1位。

98

44

55

64

84

27

|

sum

avg

min

max

67

53

75

91

74

64

|

 

 

 

 

67

64

83

62

39

27

|

 

 

 

 

81

45

26

98

24

55

|

 

 

 

 

56

34

64

60

97

32

|

 

 

 

 

66

39

28

22

77

98

|

 

 

 

 

--------------------------------

 

 

 

 

 

sum

 

 

 

 

 

 

 

 

 

 

avg

 

 

 

 

 

 

 

 

 

 

min

 

 

 

 

 

 

 

 

 

 

max

 

 

 

 

 

 

 

 

 

 

package Exp02_01_20170566134;
import java.util.Scanner;
public class Exp1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        int r = 0;
        int Xsum[] = new int[6];
        int Xavg[] = new int[6];
        int Xmin[] = new int[6];
        int Xmax[] = new int[6];
        int Ysum[] = new int[6];
        int Yavg[] = new int[6];
        int Ymin[] = new int[6];
        int Ymax[] = new int[6];
        int arr[][] =new int[6][6];
        for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr[i].length;j++){
                while(true){
                    r = (int)(Math.random()*100);
                   if (r > 20) {
                       break;
                   }
                }
                arr[i][j] = r;
            }
        }
        for(int k=0;k<arr.length;k++){  //為X最大值和最最小值設置初始值
            Xmin[k]=arr[k][0];
            Xmax[k]=arr[k][0];
        }
        for(int k=0;k<arr.length;k++){  //為Y最大值和最最小值設置初始值
            Ymin[k]=arr[0][k];
            Ymax[k]=arr[0][k];
        }
        for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr[i].length;j++){
                Xsum[i]+=arr[i][j];
                Xavg[i]+=arr[i][j];
                if(Xmin[i]>arr[i][j]){  //求最小值
                    Xmin[i] = arr[i][j];
                }
                if(Xmax[i]<arr[i][j]){  //求最大值
                    Xmax[i] = arr[i][j];
                }
                Ysum[i]+=arr[j][i];
                Yavg[i]+=arr[j][i];
                if(Ymin[i]>arr[j][i]){  //求最小值
                    Ymin[i] = arr[j][i];
                }
                if(Ymax[i]<arr[j][i]){  //求最大值
                    Ymax[i] = arr[j][i];
                }
                
                System.out.print(arr[i][j]+"\t");
            }
            System.out.print(Xsum[i]+"\t");//數值總和
            System.out.print((float)(Math.round(Xsum[i]*10/arr[i].length))/10+"\t");//平均值保留一位小數
            System.out.print(Xmin[i]+"\t"); //最大值
            System.out.print(Xmax[i]+"\t");  //最小值
            System.out.println();
        }
        System.out.println();
        
        for(int n=0;n<arr.length;n++){
            System.out.print(Ysum[n]+"\t");//數值總和
        }
        System.out.println();
        for(int n=0;n<arr.length;n++){
            System.out.print((float)(Math.round(Ysum[n]*10/arr[n].length))/10+"\t");//平均值保留一位小數
        }
        System.out.println();
        for(int n=0;n<arr.length;n++){
            System.out.print(Ymin[n]+"\t"); //最大值
        }
        System.out.println();
        for(int n=0;n<arr.length;n++){
            System.out.print(Ymax[n]+"\t");  //最小值
        }
        
    }

}

/*
 * 測試數據
2 1 3 4 5 6
1 2 3 4 6 5
2 1 3 4 5 6
2 3 3 4 5 6
6 8 3 4 2 10
5 2 3 6 2 8
 
 */
View Code

 

 

2、有n個整數,使其前面各數順序向后移m個位置,最后m個數變成最前面的m個數。 (知識點:數組定義和創建、數組遍歷、數組元素訪問)

例如 1 2 3 4 5 6 7 移動4個就變成4 5 6 7 1 2 3

要求:(1nm的值由用戶輸入;

     2)每個元素的值由用戶輸入;

     3)利用Scanner類完成數值的輸入。

      Scanner input = new Scanner(System.in);

      System.out.println(請輸入數組元素的個數);

      int size = input.nextInt();

 

package Exp02_02_20170566134;
import java.util.Scanner;
public class Exp2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
          int temp;
          Scanner input = new Scanner(System.in);
          System.out.println("請輸入數組元素的個數");
          int size = input.nextInt(); //數組個數
          System.out.println("請輸入移動位數");
          int m = input.nextInt()-1;    //移動m個數
          int arr[] = new int[size];  //創建數組
          System.out.println("請輸入數組");
          for(int i=0;i<size;i++){
              arr[i] = input.nextInt();
          }
          int result[] = new int[size];  //創建數組
          int k = 0;
          for(int j=m;j<size;j++,k++){
              result[k] = arr[j];
          }
          for(int j=0;j<m;j++,k++){
              result[k] = arr[j];
          }
          
          for(int i=0;i<size;i++){
              System.out.print(result[i]);
          }
    }

}
View Code

 

3、有2個多維數組分別是 2 3 4     1  5   2   8

               4 6 8         5  9  10 -3

                   2  7 -5 -18

按照如下方式進行運算。生成一個24列的數組。

此數組的第11列是2*1+3*5+4*2

12列是2*5+3*9+4*7  21列是4*1+6*5+8*2 依次類推。(知識點:多維數組定義和創建、數組遍歷、數組元素訪問)

 

package Exp02_03_20170566134;
import java.util.Scanner;
public class Exp3 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        double[][] arr1 = {{2,3,4},{4,6,8}};
        double[][] arr2 = {{1,5,2,8},{5,9,10,-3},{2,7,-5,-18}};
        
        double [][] resultMatrix = new double[arr1.length][arr2[0].length];
        
        for (int i = 0 ; i < resultMatrix.length ; i++ ){
            for(int j = 0 ; j < resultMatrix[0].length ; j++ ){//正好為矩陣大小,保證了每個元素都被賦值
                for (int num = 0 ; num <= arr1.length ; num++){
                        resultMatrix[i][j] = resultMatrix[i][j] + arr1[i][num]*arr2[num][j];
                }
            }
        }
         
        for (int i = 0 ; i < resultMatrix.length ; i++ ){
            for(int j = 0 ; j < resultMatrix[0].length ; j++ ){//正好為矩陣大小,保證了每個元素都被賦值
                System.out.print(resultMatrix[i][j] + "\t");
            }
           System.out.println();
        }
    }

}
View Code

 

4、編寫一個Java程序,完成以下功能: (知識點:String創建和String常用方法的使用,注意查看Java doc API

1)聲明一個名為schoolString對象,內容是

     “My school is Xuzhou Institute Of Technology”

2)打印字符串的長度;

3)打印字符串的第一個字符和最后一個字符;

4)打印字符串的第一個單詞和最后一個單詞; 

5)打印”Xuzhou”在該字符串的起始位置(從0開始編號的位置);

6)將該字符串轉為大寫字母輸出

 

package Exp02_04_20170566134;

public class Exp4 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String school = new String("My school is Xuzhou Institute Of Technology");
        System.out.println("字符串的長度為:"+school.length());
        System.out.println("字符串的首字母和尾字母:"+school.charAt(0)+" "+school.charAt(school.length()-1));
        String[] c = school.split(" "); //根據空格分割字符串
        System.out.println("字符串首個單詞和最后一個單詞為:"+c[0]+"\t"+c[c.length-1]);
        System.out.println("字符串xuzhou的位置:"+school.indexOf("Xuzhou"));
        System.out.println("字符串轉換成大寫后:"+school.toUpperCase());
    }

}
View Code

 

5、編寫一個Java程序,完成以下功能: (知識點:StringBuffer創建和StringBuffer常用方法的使用,注意查看Java doc API

JavaJavaScript 雖有都有Java四個字,但它們是完完全全不同的兩種東西,Java是由Sun 公司於19955月推出的,而JavaScript 是於1995年由Netscape公司設計實現而成的,由於Netscape公司與Sun公司合作,Netscape高層希望它看上去能夠像Java,因此取名為JavaScript

1)請從上面一段文字中,找出所有名稱為Java的字符串並統計該字符串出現的次數,注意不要統計名稱為“JavaScript”中的Java字符串。

2)在該段文字的后面追加一段文字:

Sun公司已被Oracle公司收購。   

 

package Exp02_05_20170566134;
import java.util.Scanner;
public class Exp5 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str = new String("Java和 JavaScript 雖有都有Java四個字,但它們是完完全全不同的兩種東西,Java是由Sun 公司於1995年5月推出的,而JavaScript 是於1995年由Netscape公司設計實現而成的,由於Netscape公司與Sun公司合作,Netscape高層希望它看上去能夠像Java,因此取名為JavaScript。");
        int    javalen = 0;
        int javaScriptlen = 0;
        int StartIndex = 0;
        while (str.indexOf("Java", StartIndex) >= 0) {
            StartIndex = str.indexOf("Java", StartIndex);
            StartIndex += "Java".length();
            javalen++;
        }
        StartIndex = 0;
        while (str.indexOf("JavaScript", StartIndex) >= 0) {
            StartIndex = str.indexOf("JavaScript", StartIndex);
            StartIndex += "JavaScript".length();
            javaScriptlen++;
        }
        System.out.println(javalen-javaScriptlen);
        
        StringBuffer stradd = new StringBuffer("Java和 JavaScript 雖有都有Java四個字,但它們是完完全全不同的兩種東西,"
                + "Java是由Sun\n公司於1995年5月推出的,而JavaScript 是於1995年由Netscape公司設計實現而成的,"
                + "\n由於Netscape公司與Sun公司合作,Netscape高層希望它看上去能夠像Java,因此取名為\nJavaScript。");
        
        System.out.println(stradd.append("Sun公司已被Oracle公司收購。"));
    }

}
View Code

 

6、(選做題)編寫一個截取字符串的函數,輸入為一個字符串和字節數,輸出為按字節截取的字符串,但要保證漢字不被截取半個,如“我ABC”,4,應該截取“我AB”,輸入“我ABCDEF”,6,應該輸出“我ABC”,而不是“我ABC+漢的半個”。

知識點:String中常用方法、Java中英文字節數

提示:通常說的一個字符占兩個字節是指漢字,英文字母是一個字節

      String s = “ABCDEF”  

      (1)先將s轉為字符數組  char c[] = s.toCharArray()

      (2)判斷每個字符是英文字符還是中文字符,思路是看這個字符所占字節的長度

         String.valueOf(c).getBytes().length

 

import java.util.Scanner;

public class thirds {

    public static void main(String[] args) throws Exception{
        // TODO Auto-generated method stub
        String str = "1234請輸入字符串計算機基礎語言1234";
        int cut;
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入分割字節:");
        cut = sc.nextInt();
        int times = str.getBytes("GBK").length/cut;
        int n=0,a=0,b=0;
        try {
            for (int i = 0; i < times-1; i++) {
                
                int num = trimGBK(str.getBytes("GBK"), n,n+cut);
                n = n+cut;
                //System.out.println("--"+num);
                b = b+num;
                System.out.println(str.substring(a,b));
                if(str.substring(a,b).getBytes("GBK").length<cut){
                    //System.out.println("tiaoguo");
                    a=a+1;
                    b=b+1;
                    if (!(str.getBytes("GBK")[b]<0)) {
                        System.out.println("a");
                    }
                }
                a=a+num;
                    
            }
            System.out.println(str.substring(a,str.length()));
        } catch (Exception e) {
            // TODO: handle exception
        }
        
    
    }
    //判斷一個字節數組里面有沒有漢字
    public static int trimGBK(byte[] buf,int a,int b) {
        int num = 0;
        boolean bChineseFirstHalf = false;
        for(int i=a;i<b;i++) {
        //一個字節如果小於0那么這個字符肯定就是存儲漢字的一半了
        if(buf[i]<0&&!bChineseFirstHalf) {
        //所以需要把漢字給修改為true,因為這是半個漢字所以num不能加1
        //當下一次循環過來的時候,因為bChineseFirstHalf = true;
        //既然前面的是漢字的前半部分,那么這次循環到的肯定是漢字的后
        //半部分,所以這個時候num++而且這個漢字已經過去了,因此
        //要修改bChineseFirstHalf = false;
        bChineseFirstHalf = true;
        } else {
        num++;
        bChineseFirstHalf = false;
        }
        }
        return num;
    }

}
View Code

 

7、(選做題)金額轉換,阿拉伯數字的金額轉換成中國傳統的形式如:(¥1011)->(一千零一拾一元整)輸出。

知識點:String中常用的方法

 

import java.util.Scanner;

public class Exp7 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        char ch[] = {'零','一','二','三','四','五','六','七','八','九','十'};
        char ins[] = {'元','拾','百','千','萬'};
        Scanner sc =new Scanner(System.in);
        String str;
        str = sc.next().replace('¥', ' ').trim();//先去把¥符號換成空格,在把兩邊空格去掉,在轉換成字符數組
        String aq = "";
        if (str.length()==4) {
            aq +=ch[Integer.valueOf(str)/1000];
            aq +=ins[str.length()-1];
            if (ch[Integer.valueOf(str)%1000/100]!='零') {
                aq +=ch[Integer.valueOf(str)%1000/100];
                aq +=ins[str.length()-2];
                
            }else {
                aq +=ch[Integer.valueOf(str)%1000/100];
            }    
            
            if (ch[Integer.valueOf(str)%100/10]!='零') {
                aq +=ch[Integer.valueOf(str)%100/10];
                aq +=ins[str.length()-3];
                
            }else{
                aq +=ch[Integer.valueOf(str)%100/10];    
            }
            
            if (ch[Integer.valueOf(str)%10]!='零') {
                aq +=ch[Integer.valueOf(str)%10];
                aq +=ins[str.length()-4];    
                aq = aq.replaceAll("零零", "零");
            }else{
                aq +=ins[str.length()-4];
                aq = aq.replaceAll("零零零", "元");
                aq = aq.replaceAll("元元", "元");
                aq = aq.replaceAll("零零", "元");
            }
            
            aq +='整';
        }
        if (str.length()==3) {
            
            aq +=ch[Integer.valueOf(str)/100];
            aq +=ins[str.length()-1];                
            if (ch[Integer.valueOf(str)%100/10]!='零') {
                aq +=ch[Integer.valueOf(str)%100/10];
                aq +=ins[str.length()-2];
                
            }else{
                aq +=ch[Integer.valueOf(str)%100/10];    
            }
            
            if (ch[Integer.valueOf(str)%10]!='零') {
                aq +=ch[Integer.valueOf(str)%10];
                aq +=ins[str.length()-3];    
                aq = aq.replaceAll("零零", "零");
            }else{
                aq +=ins[str.length()-3];
                aq = aq.replaceAll("零零零", "元");
                aq = aq.replaceAll("元元", "元");
                aq = aq.replaceAll("零零", "元");
            }
            
            aq +='整';
        }
        if (str.length()==2) {
            
                aq +=ch[Integer.valueOf(str)/10];
                aq +=ins[str.length()-1];
            if (ch[Integer.valueOf(str)%10]!='零') {
                aq +=ch[Integer.valueOf(str)%10];
                aq +=ins[str.length()-2];    
                aq = aq.replaceAll("零零", "零");
            }else{
                aq +=ins[str.length()-2];
                aq = aq.replaceAll("零零零", "元");
                aq = aq.replaceAll("元元", "元");
                aq = aq.replaceAll("零零", "元");
            }
            
            aq +='整';
        }
        if (str.length()==1) {
            aq +=ch[Integer.valueOf(str)];
            aq +=ins[str.length()-1];
            aq +='整';
        }
        aq = aq.replaceAll("元元", "元");
        aq = aq.replaceAll("零元", "元");
        System.out.println(aq);
    }

}
/*
 測試數據
 
 ¥1203    一千二百零三元整
 ¥1000        一千元整
 ¥1001    一千零一元整
 ¥1010   一千零一拾元整
¥1100        一千一百元整
 ¥120        一百二拾元整
 ¥102        一百零二元整
 ¥100        一百元整
 ¥12        一拾二元整
 ¥10        一拾元整
 ¥8            八元整
 * */
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM