day04

来源:互联网 发布:linux 脚本优先级 编辑:程序博客网 时间:2024/04/23 21:30

数组

数组实际上是一组相同类型数据的线性集合,当在程序中需要处理一组数据,或者传递一组数据时,可以应用这种类型的数组。

字符串类型

常用的字符串类型有String类型和StringBuffer类型,前者一旦创建就存储在内存中,除了重新赋值,不能改变。后者可以通过一些方法来变动。

代码:

用数组求出平均数

import java.util.*;public class ArrayScore {    public static void main(String[] args){        int m = 0;        System.out.println("请输入人数:");        Scanner scanner = new Scanner(System.in);        m = scanner.nextInt();        int scores[] = new int[m];        int sum = 0;        for (int i = 0; i < scores.length; i++) {            System.out.println("请输入第"+(i+1)+"位的分数:");            scores[i] = scanner.nextInt();            sum +=scores[i];        }        float array = 0;        array = sum/m;          System.out.println("平均分数为:"+array);    }}

输出结果:这里写图片描述

数组排序

import java.util.Arrays;public class ArraySort {    public static void main(String[] args) {        int arr[] = {12,56,44,9,45,87,32,84};        int arr1[] = new int [5];//      arr1 = Arrays.copyOf(arr, 6);        arr1 = Arrays.copyOfRange(arr, 3, 9);        for (int i = 0; i < arr1.length; i++) {            System.out.print(arr1[i]+" ");        }    }}

其中用到的方法:
Arrays.copyOfRange(arr, 3, 9)
表示从数组下标为3的位数开始,从数组中截取9位出来,结果是一个新的数组。
运行结果:这里写图片描述

数组的冒泡排序

import java.util.Scanner;public class Bubble {    public static void main(String[] args){        System.out.println("输入数组长度:");        Scanner scanner = new Scanner(System.in);        int m = scanner.nextInt();        int array[] =new int [m];        int temp = 0;        for(int a = 0; a <array.length;a++){            System.out.println("输入第"+(a+1)+"位数");            array[a] = scanner.nextInt();        }        System.out.println("排序前的数组:");        for (int x = 0; x < array.length; x++) {            System.out.print(array[x]+" ");        }        for(int i = 0; i < array.length; i++){            for(int j = 0; j < array.length-i-1;j++){                if(array[j] > array[j+1]){                    temp = array[j+1];                    array[j+1] =array[j];                     array[j] = temp;                }            }        }        System.out.println();        System.out.println("排序后的数组:");        for (int k = 0; k < array.length; k++) {            System.out.print(array[k]+" ");        }    }}

冒泡排序的基本思路就是从下往上依次比较,如果后者小于前者,就进行一次交换。以此类推。
运行结果:这里写图片描述

用数组来完成斐波那契数列的求和

import java.util.*;public class ArrayRabbits {    public static void main(String[] args){        int n;        System.out.print("要求第几个月的兔子总数:");        Scanner s = new Scanner(System.in);        n = s.nextInt();        int array[] = new int[n];        array[0] = 1;        array[1] = 2;        array[2] = 3;        for(int i = 3;i < array.length;i++){            array[i] = array[i-1]+array[i-3];        }        System.out.println(array[n-1]);    }}

运行结果:这里写图片描述

输出一个九宫格的二维数组

public class ErWeiArray {    public static void main(String[] args) {        int [][]array = new int [3][3];        array[0] = new int[]{4,9,2};        array[1] = new int[]{3,5,7};        array[2] = new int[]{8,1,6};        for (int i = 0; i < array.length; i++) {            int []temp = array[i];            for (int j = 0; j < temp.length; j++) {                System.out.print(temp[j]+" ");            }            System.out.println();        }    }}

运行结果:这里写图片描述

随机输出10个2位数,然后给他们排序

import java.lang.reflect.Array;import java.util.Arrays;import java.util.Random;public class RandomTest {    public static void main(String[] args){        Random random = new Random();        int x = 0;        int []arr = new int[10];        for (int i = 0; i < 10; i++) {            do{                x = random.nextInt(100);                if(x>=10){                    arr[i] = x;                }            }while(arr[i]==0);        }//获取值完成        System.out.println(Arrays.toString(arr));        int temp = 0;        for (int i = 0; i < arr.length; i++) {            for (int j = 0; j < arr.length-i-1; j++) {                if(arr[j]>arr[j+1]){                    temp = arr[j+1];                    arr[j+1] =arr[j];                     arr[j] = temp;                }            }        }        System.out.println(Arrays.toString(arr));    }}

其中用到的方法:Random()方法,Random()方法下的nextInt(s)方法是输出随机数,s的值是随机数的最大值。
Arrays.toString(arr)这个方法就是把数组转化成字符串。

运行结果:
这里写图片描述
这里写图片描述

将字符串中的大小写字母改变大小写

public class String1 {    public static void main(String[] args) {        String s ="asde1234fIUGIUDB";        String s1 = "";        for (int i = 0; i < s.length(); i++) {            char c = s.charAt(i);            boolean ch1 = Character.isUpperCase(c);            boolean ch2 = Character.isLowerCase(c);            if(ch1==true){                c = (char)(c+32);            }            else if(ch2==true){                c = (char)(c-32);            }            s1 = s1.concat(String.valueOf(c));//字符连接的语句        }        System.out.println(s1);    }}

用到方法:Character.isUpperCase(c);转换成大写字母
Character.isLowerCase(c);转换成小写字母
String.valueOf(c)将字符串用字符的形式返回
s1.concat()连接字符串

运行结果:这里写图片描述

字符串中加入,

import java.util.Scanner;public class Stringbuffer {    public static void main(String[] args){        StringBuffer buffer =new StringBuffer("131465498768435132123");        for (int i = 3; i < buffer.length(); i+=4) {                buffer.insert(i, ',');        }        System.out.println(buffer);    }}

运行结果:这里写图片描述

判断一串字符串是否为邮箱

import java.util.Scanner;public class YouXiang {    public static void main(String[] args) {        String s = "";        boolean panduan = true;        System.out.print("请输入邮箱:");//输入邮箱        Scanner scanner = new Scanner(System.in);        s = scanner.nextLine();        boolean rule0 = s.contains("@");        int rule01 = s.indexOf("@");        int rule02 = s.lastIndexOf("@");        //判断是否有且只有一个@        if(rule0==false || rule01 != rule02 ){            System.out.println("邮箱格式输入错误");            panduan = false;        }        boolean rule2 = s.endsWith(".com");        boolean rule3 = s.endsWith(".cn");        boolean rule4 = s.endsWith(".net");        //判断结尾是否有一个.com.cn.net        if(rule2 == false && rule3 == false && rule4 == false){            System.out.println("邮箱格式输入错误");            panduan = false;        }        String[] str = s.split("@");//分割字符串        for (int i = 0; i < str[0].length(); i++) {            char c = s.charAt(i);            //判断@前面是不是字母数字_的组合            if(c<'A'&&c>'z'&&c<'0'&&c>'9'&&c!='_'){                System.out.println("邮箱格式输入错误");                panduan = false;            }        }        for (int i = 0; i < str[1].length(); i++) {            char c = s.charAt(i);            //判断@后面是不是字母数字.的组合            if(c<'A'&&c>'z'&&c<'0'&&c>'9'&&c!='.'){                System.out.println("邮箱格式输入错误");                panduan = false;            }        }        if(panduan==true){            System.out.println("邮箱格式输入正确");        }    }}

用到方法s.charAt(i);获取字符串相应位置的字符。
s.split(“@”);将字符串从指定字符处截断。

运行结果:这里写图片描述

其他方法

boolean e = Character.isLetter(c);//判断字符是不是字母boolean r = Character.isDigit(c);//判断字符是不是数字boolean q = s.endsWith("asd");//判断结尾是不是指定字符串String w = s.substring(3, 5);//从当前字符串中截取一段字符串boolean b = s.startsWith("1");//判断一个字符串是否从指定字符串开始
0 0