数组
数组实际上是一组相同类型数据的线性集合,当在程序中需要处理一组数据,或者传递一组数据时,可以应用这种类型的数组。
字符串类型
常用的字符串类型有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");
//判断一个字符串是否从指定字符串开始