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