java Scanner类与String类

Scanner类的使用:

​ 导入Scanner包,new Scanner对象,记得调用System.in参数,调用对应next方法实现键盘录入。

import java.util.Arrays;
import java.util.Scanner;

/**
 * 键盘录入:
 *  键盘录入三个整数数值,然后比较三个数中的值
 */

public class ScannerTest {
    public static void main(String[] args) {
        int[] ints=new int[3];
        Scanner sc=new Scanner(System.in);
         for(int i=0;i<3;i++)
        {
            int num=sc.nextInt();
            ints[i]=num;
            for(int j=0;j<i;j++)
            {
                if(ints[j]<ints[i])
                {
                    int temp=ints[j];
                    ints[j]=ints[i];
                    ints[i]=temp;
                }
            }
        }
        for(int i=0;i<3;i++)
            System.out.println(ints[i]);
    }
}

java 中对类的定义:

       java 本身是面向对象的语言,如果需要使用java去开发一个软件
       那么,软件中每一个模块都是一个个体,每一个个体会拆分为很多单元,
       每个单元本身是一个模糊的概念,针对这一的一个概念,我们一般用类
       去定义,然后在具体执行的时候,需要让模块之间互相协作,正常的去
       模拟现实生活中的场景的时候,就需要创建这个类所对应的实例!

用new新建数组

int[] ints={};//这样直接用{}初始相当于ints为空 抛出数组越界异常

int[] ints=new int[3];//相当于创建了一长度为3的整形数组

方法

//用于键入三个整形数并求和
public class getSum {
    public static void main(String[] args) {
        int[] ints=new int[3];
        Scanner scanner=new Scanner(System.in);
        for(int i=0;i< ints.length;i++)
        {
            ints[i]=scanner.nextInt();
        }
        System.out.println(sum(ints));
    }
    public static int sum(int[] ints)
    {
        int sum=0;
        for(int i=0;i< ints.length;i++)
        {
            sum+=ints[i];
        }
        return sum;
    }
}

​ 方法声明为静态static方法,在主函数中可以直接调用,如果方法并非static方法,要在主函数中调用,必须先定义一个该类对象,通过对象调用方法求和。

方法的递归与重载

​ 递归是方法自己调用自己,递归会严重损耗系统的资源,尽量避免使用递归
​ 方法重载是方法的方法名相同,但是方法的参数列表不同,参数列表不同包括参数的个数不同、个数相同但是参数的类型不同。

数组

1.数组的创建
数组是引用数据类型,可以通过new的方式创建数组
创建数组的两种方式

int[] ints1=new int[10];//创建后不赋值 整型默认值为0
int ints2[]=new int[10];

2.数组的foreach遍历方法

//创建引用类型数组
String[] strings=new String[5];//创建后不赋值 字符型默认值为null
strings[0] = "hello";
strings[1] = "hello";
strings[2] = "world";
strings[3] = "hello";
strings[4] = "java";
//统计hello这个字符串出现的次数
//equals()是字符串的常用方法,判断字符串是否完全相同
int num=0;
//foreach 遍历
//for(存放数据的数据类型 遍历的每一项: 容器对象 )
for(String str : strings)
{
   if(str.equals("hello"))
      {
          num++;
      }
}
        System.out.println("hello出现的次数:"+num);

字符串常用方法

1、str.equals() 判断字符串是否完全匹配

//str.equals() 判断字符串是否完全匹配
System.out.println(str.equals("hello world"));

2、str.contains() 判断是否包含某一字符串

//str.contains() 判断是否包含某一字符串
System.out.println(str.contains("hello"));

3、str.substring(int beginIndex) //表示从String第一个字符 即下标0开始切割到beginIndex
str.substring(int beginIndex,int endIndex)//从下标beginIndex开始,到endIndex-1结束 比如(6,11)得到world

// 字符串切割
System.out.println(str.substring(1));
System.out.println(str.substring(6,11));

4、str.toLowerCase() 大写转小写

String str3="hELLO world";str3.toLowerCase()

5、str.length() 求长度

str.length()

6、str.endsWith(String suffix) 判断是否以某字符串结尾

str.endsWith("world")

7、str.split() 字符串的分割 返回一个数组

String[] strings=str.split(" ");

8、str.toCharArray() 字符串转出字符数组

char[] chars=str.toCharArray();

9、str.replace() 将字符串中target以replacement字符串替换

String str2=str.replace("world","java");

10、str.indexOf(char ch) 返回第一次ch出现的地址

String str="abbcw";str.indexOf('w');//返回4str.indexOf('cw');//返回3

案例

​ 统计每个字符出现的个数

String str="这里是要统计的字符串";char[] chars=str.toCharArray();int[]  num=new int[chars.length];String str2="";//记录单个字符int i=0;for (char c:chars){    String tempstr=""+c;    if(!str2.contains(tempstr))//如果不包含    {        str2=str2+c;        num[i]++;        i++;    }    else    {        num[str2.indexOf(c)]++;    }}char[] chars1=str2.toCharArray();for(int j=0;num[j]!=0;j++) {    System.out.println(chars1[j]+"出现了"+num[j]+"次");}

为了统计每个字符出现的次数,可以用一个整型数组存放字符出现的次数,并且这里采用字符串存放单个字符,最后转换字符串为字符数组打印出来,这样可以利用字符串类的一些函数而避免多次for循环。
这种具有keyvalue类型的结构可以用集合中的hashmap来实现。

posted @ 2021-07-17 23:48  ins1mnia  阅读(109)  评论(0编辑  收藏  举报