13.Java的Scanner类与String类

###13.01——常见对象(Scanner的概述和方法简介)

*A:Scanner的概述

*B:Scanner的构造方法原理

        * Scanner(InputStream source)

        *System类下有一个静态的字段:

                *public static final InputStream in; 标准的输入流,对应着键盘录入

*C:一般方法

         *hasNextXxx()     判断是否还有下一个输入项,其中Xxx可以是Int、Double等。如果需要判断是否包含下一个字符串,则可以省略Xxx

         *nextXxx()     获取下一个输入项,Xxx的含义和上个方法中的Xxx相同,默认情况下,Scanner使用空格,回车等作为分隔符

import java.util.Scanner;
public class M_Scanner{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);//键盘录入
        int i = sc.nextInt();//键盘录入整数,存储在i中
        System.our.println(i);//程序等待输入
        if(sc.hasNextInt()){
            int i = sc.nextInt();
            System.out.println(i);
        }
        else
            System.out.println("输入的类型错误");
    }
}

###10.02——常见对象(Scanner获取数据出现的小问题及解决方案)

*A:两个常用的方法:

        *public int nextInt():获取一个int 类型的值

        *public String nextLine() : 获取一个String类型的值

*B:案例演示

        *a:先演示获取多个int值,多个String值的情况

        *b:再演示先获取int值,然后获取String类型的值

 

*B:案例演示

         *a:先演示获取多个int值,多个String值的情况

         *b:再演示先获取int值,然后获取String值出现问题

         *c:问题解决方案

                   *第一种:先获取一个数值后,再创建一个新的键盘录入对象获取字符串

                   *第二组:把所有的数据都先按照字符串获取,然后要什么,你就对应的转换为什么。(后面讲)

package ScannerAndString;

import java.util.Scanner;

public class Scanner2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		// System.out.println("请输入第一个整数:");
		// int i = sc.nextInt();
		// System.out.println("请输入第二个整数:");
		// int j = sc.nextInt();
		// System.out.println("i = " + i + ", j = " + j);
		// System.out.println("请输入第一个字符串:");
		// String line1 = sc.nextLine();
		// System.out.println("请输入第二个字符串:");
		// String line2 = sc.nextLine();
		// System.out.println("line1 = " + line1 + ", line2 = " + line2);
//		System.out.println("请输入第一个整数:");
//		int i = sc.nextInt();// 当我们录入10的时候,其实在键盘上录入的是10和\r\n,nextInt()方法只获取10就结束了
//		// nextLine()是键盘录入字符串的方法,可以接收任意类型,它只要遇到\r\n就正门一行结束;
//		System.out.println("请输入第一个字符串:");
//		String line2 = sc.nextLine();
//		System.out.println("i = " + i + ", line2 =" + line2);
		/*
		 * 解决方案
		 */
		int i = sc.nextInt();
		Scanner sc2 = new Scanner(System.in);
		String line = sc2.nextLine();
		System.out.println(i);
		System.out.println(line);
	}
}

###10.03——常见对象(String类的概述)

*A:String类的概述

        *通过JDK提供的API,查看String类的说明

        *可以看到这样的两句话

                    *a:字符串字面值"abc"也可以看出是一个字符串对象

                     *b:字符串是常量,一旦被复制,就不能被改变。

package ScannerAndString;

public class String1 {
	public static void main(String[] args) {
		String str = "abc";//"abc"可以看成一個字符串
		str = "def";//檔把“def”賦值給str,原來的"abc"變成了垃圾
		System.out.println(str);
	}
}

###12.04——常见对象(String类的构造方法)

*A:常见构造方法

          *public String()   :空构造

          *public String(byte[] bytes)   :把字节数组转成字符串

          *public String(byte[] bytes , int index , int length ):把字节数组的一部分转成字符串

          *public String(char[] value):把字符数组转成字符串

          *public String(char[] value , int index ,int count) :把字符数组的一部分转成字符串

          *public String(String original):把字符串常量转成字符串

*B:案例演示

         *演示String类的常见构造方法

package ScannerAndString;

public class String2 {
	public static void main(String[] args) {
		// 空构造
		String s1 = new String();
		System.out.println(s1);
		// 把字节数组转成字符串
		byte[] arr = { 99, 98, 97 };
		String s2 = new String(arr);// 解码
		System.out.println(s2);

		byte[] arr1 = { 99, 98, 97, 100, 56, 45, 56 };
		String s22 = new String(arr1, 4, 2);// 解码,从第5个开始转换2个
		System.out.println(s22);

		char[] arr3 = { '我', '爱', '你' };//将字符数组转换为字符串
		String s33 = new String(arr3);
		System.out.println(s33);
		String s44 = new String(arr3, 0, 3);//从第一个开始转换3个
		System.out.println(s44);
		String s5 = new String("你爱我");
		System.out.println(s5);
	}
}

###12.05——常见对象(String类常见面试题)

package ScannerAndString;

public class String3 {
	public static void main(String[] args) {
		// 大家猜猜输出结果,最好动手试一下
		String s1 = "abc";
		String s2 = "abc";
		System.out.println(s1 == s2);
		System.out.println(s1.equals(s2));

		String s3 = new String("abc");// 这句话在内存中创建了几个对象
		System.out.println(s3 == s1);
		System.out.println(s3.equals(s1));
		String s4 = "a" + "b" + "c";
		System.out.println(s4 == s2);
		System.out.println(s4.equals(s2));
		String s5 = "ab";
		String s6 = s5 + "c";
		System.out.println(s6 == s2);
		System.out.println(s6.equals(s2));
	}
}

###12.06——常见对象(String类的判断功能)

A:String类的判断功能

             *boolean equals(Object obj) :比较字符串的内容是否相同,区分大小写

             *boolean equalsIgnoreCase (String str):比较字符串的内容是否相同,忽略大小写

             *boolean contains(String str):判断大字符串中是否包含小字符串

             *boolean startsWith(String str):判断字符串是否以某个指定的字符串开头

             *boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾

             *boolean isEmpty():判断字符串是否为空。

###12.07——常见对象(模拟用户登陆)

A:案例演示

            *需求:模拟登陆,给三次机会,并提示还有几次

            *用户名和密码都是admin

package ScannerAndString;

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		for (int i = 0; i < 3; i++) {
			System.out.println("请输入用户名:");
			String userName = sc.nextLine();// 将键盘录入的用户名存储在userName中
			System.out.println("请输入密码");
			String password = sc.nextLine();
			// 如果是字符串常量和字符串变量比较,通常都是字符串常量调用方法,将变量当作参数传递,防止空指针异常
			if ("admin".equals(userName) && "admin".equals(password)) {
				System.out.println("欢迎" + userName + "登录");
				break;
			} else {
				System.out.println("用户或密码输入错误");
				System.out.println("您还有" + (2 - i) + "次机会");
			}
		}
	}
}

###12.08——常见对象(String类的获取功能)

int length() : 获取字符串的长度

char charAt(int index):获取指定索引位置的字符

int indexOf(int ch):返回指定字符在字符串中第一次出现的索引

int indexOf(String str)返回指定字符串在此字符串中第一次出现处的索引

int indexOf(int ch ,int fromIndex):返回指定字符串在此字符串中指定位置后第一次出现的索引

lastIndexOf

String substring(int start):从指定位置开始截取字符串,默认到末尾

String substring(int start , int end):从指定位置开始到指定位置结束截取字符串。

###12.09——常见对象(字符串的遍历)

遍历字符串

package ScannerAndString;

public class Test2 {
	public static void main(String[] args) {
		String s = "maomi";
		for(int i=0;i<s.length();i++){
			char c = s.charAt(i);
			System.out.println(c);//通过索引获取字符
		}
	}
}

###12.10——常见对象(统计不同类型字符串个数)

A:案例演示

            *需求:统计一个字符串中大写字符,小写字符,数字字符出现的次数,其他字符出现的次数。

package ScannerAndString;

public class Test2 {
	public static void main(String[] args) {
		int big = 0;
		int small = 0;
		int num = 0;
		int other = 0;
		String s = "abcdfrsdfjk561465*&*^&^&*";
		for (int i = 0; i < s.length(); i++) {
			char c = s.charAt(i);
			if (c >= 'A' && c <= 'Z') {
				big++;
			} else if (c >= 'a' && c <= 'z') {
				small++;
			} else if (c >= '0' && c <= '9') {
				num++;
			} else
				other++;
		}
		System.out.println(s + "中大写字母有:" + big + "个,小写字母有:" + small + "个,数字有:"
				+ num + "个,其他字符有:" + other + "个");
	}
}

###12.11——常见对象(String类的转换功能)

byte[] getBytes():把字符串转换为字节数组

char[] toCharArray():把字符串转换为字符数组

static String valueOf(char[] chs ):把字符数组转换成字符串

static String valueOf(int i):把int 类型的数据转换成字符串/

              注意:String类的valueOf方法可以吧任意类型的数据转成字符串

String toLowerCase():把字符串转成小写。

String toUpperCase():把字符串转成大写

String concat(String str):把字符串拼接

package ScannerAndString;

public class Method {
	public static void main(String[] args) {
		String s1 = "abc";
		byte[] arr = s1.getBytes();//通过GDK码表
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i] + " ");//编码
		}
		char[] arr1 = s1.toCharArray();
		for (int i = 0; i < arr1.length; i++) {
			System.out.println(arr1[i] + " ");//编码
		}
		char[] arr2 = {'a','b','c'};
		String s = String.valueOf(arr2);
		System.out.println(s);
	}
}

###12.12——常见对象

把一个字符串的首字母转换成大写,其余为小写

package ScannerAndString;

public class Test3 {
	public static void main(String[] args) {
		String s = "woaimaomao";
		String s2 = s.substring(0,1).toUpperCase().concat(s.substring(1).toLowerCase());
		System.out.println(s2);
	}
}

###12.13——常见对象(把数组转成字符串)

*A:案例演示

         *需求:把数组中的数据按照指定格式拼接成一个字符串

package ScannerAndString;

public class Test3 {
	public static void main(String[] args) {
		int[] arr = { 1, 2, 3 };
		String s = "[";// 定义一个字符串用来与数组拼接
		for (int i = 0; i < arr.length; i++) {
			if (i == arr.length - 1)
				s = s + arr[i] + "]";
			else
				s = s + arr[i] + ", ";
		}
		System.out.println(s);
	}
}

###12.14——常见对象(String类的其他功能)

1.替换功能

String replace (char old,char new);

String replacr(String old , String new );

2.去除字符串两空格

String trim()

3.按字典序比较两个字符串

int compareTo(String str)

int compareToIgnoreCase(String str)

package ScannerAndString;

public class Method2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s = "qinmu";
		String s2 = s.replace('i', 'o');
		System.out.println(s2);// 如果替换不存在,保留原来字符不改变
		String s4 = s.replace("qi", "mu");
		String s1 = "   qingn   mu ";
		String s3 = s.trim();// 去除左右两边空格
		System.out.println(s3);
		String s5 = "bcd";
		System.out.println("abc".compareTo(s5));// 按照码表值比较
		String s6 = "Bcd";
		System.out.println(s5.compareToIgnoreCase(s6));
	}

}

###12.15——常见对象(字符串反转)

package ScannerAndString;

import java.util.Scanner;

public class Method2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.println("请输入一个字符");
		String line = in.nextLine();
		char[] arr = line.toCharArray();//将字符串转换为字符数组
		String s = "";
		for(int i = arr.length-1;i>=0;i--){
			s=s+arr[i];
		}
		System.out.println(s);
	}

}

###12.16——常见对象(在大串中查找小串出现的次数代码实现)

package ScannerAndString;

import java.util.Scanner;

public class Method2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String max = "woaimaomaomaomaoshiwozuixihuandemao";
		// 通过indexOf方法在大串中找小串,根据获取的索引值假设小串的长度,截取大串
		String min = "mao";
		int count = 0;// 计数器
		int index = 0;// 定义索引
		while ((index = max.indexOf(min)) != -1) {
			count++;//计数器自增
			max = max.substring(index+min.length());
		}
		System.out.println(count);
	}

}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值