科大讯飞笔试编程第二题(处理Scanner不能先输入数字再输入字符串问题)

news2024/9/22 11:42:41

问题:
在使用scanner的时候如果先读取一个数字,在读取一行带有空格的字符串,势必会出错或者字符串读不到

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        int x = scanner.nextInt();
        String s = scanner.nextLine();
        
        System.out.println("x = " + x);
        System.out.println("s = " + s);    
}

错误原因:标记读取方法 nextInt() 读取数字,然后在分隔符处停止,这里的分隔符是行分隔符(回车键),nextLine() 会在读取行分隔符之后结束,然后返回行分隔符之前的字符串,因为行分隔符之前没有字符,所以line是空的。

解决方法:因为我们前面读取的是一个数字,我们可以先用字符串读取这个数字,在用字符串读取我们所要读取的字符,然后再把第一个读取的字符串转换为数字就可以实现这个功能了。
两种解决方法:

解决方法一:将数字先转化为字符串型,再转化回int型

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        String y = scanner.nextLine();
        String s = scanner.nextLine();
        
        int x = Integer.parseInt(y);               //强制转换字符y为int类型的x
        
        System.out.println("x = " + x);
        System.out.println("s = " + s);    
}

解决方法二:用next()替代nextLine(),但是这里的next无法读取有空格的字符串,但可以读取字符串

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        int x = scanner.nextInt();
        String s = scanner.next();
        
        System.out.println("x = " + x);
        System.out.println("s = " + s);    
}

参考:java学习笔记:Scanner先输入整型再输入字符串时,字符串不能输入的问题

科大讯飞笔试编程第二题:
找两个字符串相似度

  1. 两个字符串长度相同,相似加1
  2. 两个字符串含有相同类型的字符组成,相似加1
    相似类型的字符只有三类 数字、字母、其他字符
    第一行输入t,它代表查询几次
    每次查询输入两个字符串比较相似
    比如:

在这里插入图片描述
通过分析可知0>=相似度<=2

public class Main {
	public static void main(String args[]) {		
		Scanner sc=new Scanner(System.in);
		String y=sc.nextLine();
		int t=Integer.parseInt(y);
		//不能先输入数字型再输入字符串型(特指nextLine)
		String[] str=new String[2];
		
		while(t>0) {
			
			int[] re1=new int[3];
			int[] re2=new int[3];
			
			int count=0;
			t--;			
		
			
			str[0]=sc.nextLine();//输入带空格的字符串
		
			str[1]=sc.nextLine();
			
			
			if(str[0].length()==str[1].length()) {//第一个判定条件
				count++;
			}
			char[] ch1=new char[str[0].length()];
			char[] ch2=new char[str[1].length()];
			
			for(int i=0;i<str[0].length();i++) {
				ch1[i]=str[0].charAt(i);
			}
			
			for(int i=0;i<str[1].length();i++) {
				ch2[i]=str[1].charAt(i);
			}
					

			for(int i=0;i<ch1.length;i++) {//第二个判定条件,借助共同数组
				if((ch1[i]>='a'&&ch1[i]<='z')||(ch1[i]>='A'&&ch1[i]<='Z')) {
					re1[0]=1;
				}else if(ch1[i]>='0'&&ch1[i]<='9'){
					re1[1]=1;
				}else {
					re1[2]=1;
				}
			}
			
			for(int i=0;i<ch2.length;i++) {
				if((ch2[i]>='a'&&ch2[i]<='z')||(ch2[i]>='A'&&ch2[i]<='Z')) {
					re2[0]=1;
				}else if(ch2[i]>='0'&&ch2[i]<='9'){
					re2[1]=1;
				}else {
					re2[2]=1;
				}
			}
			
			int count1=0;
			
			for(int i=0;i<3;i++){
				if(re1[i]==re2[i]) {		
					count1++;
				}	
			}
			if(count1==3) {
				System.out.println(count+1);
			}else {
			System.out.println(count);
			}			
		}
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/931751.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RabbitMQ-常用命令

RabbitMQ常用命令 3.1 启动停止rabbitMQ命令 # 前台启动Erlang VM 和 RabbitMQ 当窗口关闭或者ctrlc时&#xff0c;使退出了。 rabbitmq-server# 使用系统命令启动 systemctl start rabbitmq-server# 后台启动 rabbitmq-server -detached# 停止rabbitMQ和Erlang VM rabbitmq-…

锁的相关策略

乐观锁vs悲观锁 指的不是具体的锁,是一个抽象的概念,描述的是锁的特性,描述的是一类锁 乐观锁 假设数据一般情况下不会产生并发冲突,所以在数据进行提交更新的时候,才会正式对数据是否产生并发冲突进行检测,如果发现并发冲突了,就让返回用户错误的信息,让用户决定如何去做.(…

3dsMax软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 3dsMax是一款由Autodesk公司开发的著名的三维计算机图形软件&#xff0c;广泛应用于动画、游戏、建筑和产品设计等领域。它以强大的建模、动画、渲染和特效功能而闻名&#xff0c;为用户提供了一个完整的制作流程&#xff0c;从…

Java设计模式-职责链模式

1 概述 在现实生活中&#xff0c;常常会出现这样的事例&#xff1a;一个请求有多个对象可以处理&#xff0c;但每个对象的处理条件或权限不同。例如&#xff0c;公司员工请假&#xff0c;可批假的领导有部门负责人、副总经理、总经理等&#xff0c;但每个领导能批准的天数不同…

【JVM 内存结构丨栈】

栈 -- 虚拟机栈 简介定义压栈出栈局部变量表操作数栈方法调用特点作用 本地方法栈&#xff08;C栈&#xff09;定义栈帧变化作用对比 主页传送门&#xff1a;&#x1f4c0; 传送 简介 栈是用于执行线程的内存区域&#xff0c;它包括局部变量和操作数栈。 Java 虚拟机栈会为每…

Python 支付宝红包二维码制作步骤分享

<table><tr><td bgcolororange>本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰&#xff0c;更不会影响计算机信息系统的正常运行。不得将代码用于非法用途&#xff0c;如侵立删&#xff01; 支付宝红包二维码制作…

三方接口调用设计方案

在为第三方系统提供接口的时候&#xff0c;肯定要考虑接口数据的安全问题&#xff0c;比如数据是否被篡改&#xff0c;数据是否已经过时&#xff0c;数据是否可以重复提交等问题 在设计三方接口调用的方案时&#xff0c;需要考虑到安全性和可用性。以下是一种设计方案的概述&a…

go语言中的切片

切片底层 切片&#xff08;Slice&#xff09;是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活&#xff0c;支持自动扩容。 切片是一个引用类型&#xff0c;它的内部结构包含地址、长度和容量。切片一般用于快速地操作一块数据集合。 切片…

eclipse中怎么将空白字符显示出来、各种空白字符显示出来是什么样子

空白字符如space、Tab、Ideographic sapce&#xff08;表意空格&#xff0c;就是表意文字中使用的全角空格&#xff09;、回车、换行。 编程规范一般都会要求不用Tab。如果代码中哪个地方用了&#xff0c;但肉眼又看不出来&#xff0c;可以将空白字符暂时显示出来看看。 通过…

知虾shopee数据分析工具:shopee运营选品助手

在如今竞争激烈的电商领域&#xff0c;Shopee商家为了在市场中脱颖而出&#xff0c;必须精准地选品和定价&#xff0c;以满足消费者需求并提升销售。而知虾Shopee数据分析工具作为一款强大的商业助手&#xff0c;为商家提供了丰富的数据分析功能&#xff0c;从而帮助他们更好地…

3.Redis 单线程模型

redis 单线程模型 redis 只使用一个线程来处理所有的命令请求&#xff0c;并不是说一个 redis 服务器进程内部真的就只有一个线程&#xff0c;其实也有多个线程&#xff0c;多个线程是再处理网络 IO。 那么在多线程中&#xff0c;针对类似于这样的场景两个线程尝试同时对一个…

Oracle数据库快速入门

前言&#xff1a; 我想现在很多人的入门数据库都是mysql&#xff0c;但是由于工作中会接触到Oracle数据库&#xff0c;如果你有MySQL的基础的话&#xff0c;这篇文章能让你很快掌握Oracle。 目录 1.体系结构 2.创建用户和表空间 2.1.创建表空间 2.2.创建用户 3.数据类型…

Python | assert关键字

Python断言assert是帮助代码流畅的调试工具。断言主要是假设程序员知道或总是希望是真的&#xff0c;因此将它们放在代码中&#xff0c;这样这些失败不会允许代码进一步执行。 简单地说&#xff0c;断言是一个布尔表达式&#xff0c;用来检查语句是True还是False。如果语句为T…

java八股文面试[多线程]——线程的生命周期

笔试题&#xff1a;画出线程的生命周期&#xff0c;各个状态的转换。 5.等待队列(本是Object里的方法&#xff0c;但影响了线程) 调用obj的wait(), notify()方法前&#xff0c;必须获得obj锁&#xff0c;也就是必须写在synchronized(obj) 代码段内。与等待队列相关的步骤和图 …

AI绘画StableDiffusion实操教程:斗破苍穹-小医仙

之前分享过StableDiffusion的入门到精通教程&#xff1a;AI绘画&#xff1a;Stable Diffusion 终极炼丹宝典&#xff1a;从入门到精通 但是还有人就问&#xff1a;安装是安装好了&#xff0c;可是为什么生成的图片和你生成的图片差距那么远呢&#xff1f; 怎么真实感和质感一…

小研究 - Java虚拟机内存管理(四)

Java 语言的面向对象&#xff0c;平台无关&#xff0c;安全&#xff0c;开发效率高等特点&#xff0c;使其在许多领域中得到了越来越广泛的应用。但是由于Java程序由于自身的局限性&#xff0c;使其无法应用于实时领域。由于垃圾收集器运行时将中断Java程序的运行&#xff0c;其…

电机控制::控制技术与控制要求

功能要求性能要求基本FOC基础控制&#xff08;刚性调参&#xff09;稳、准、快系统性能优化先进控制方案&#xff1a; 精准建模惯量辨识&#xff08;机械参数辨识&#xff1a;辨识 or 观测&#xff09;先进控制方案&#xff08;算法环节&#xff09;SMC、ADRC、自适应、扰动观测…

Ubuntu22.04安装中文输入法►由踩坑到上岸版◄

Ubuntu22.04安装中文输入法►由踩坑到上岸版◄ 了解入坑上岸 更新一发&#xff1a;Gedit中文乱码问题的解决 为了方便回忆和记录甚至后面继续重装系统&#xff0c;我还是写一下以便将来用到或参考&#xff5e; 了解 安装Ubuntu22.04&#xff08;截至2023年08月26日11&#xff…

stm32读写片内flash项目总结(多字节读写tongxindu)

1.flash操作驱动程序 a头文件 #ifndef FLASH_H #define FLASH_H #include “stm32f4xx.h” #define BOARD_NUM_ADDR 0x0800C000 #define STM32_FLASH_BASE 0x08000000 //STM32 FLASH的起始地址 #define FLASH_WAITETIME 50000 //FLASH等待超时时间 //FLASH 扇区的起始地址…

石油石化行业网络监控运维方案,全局态势感知,实时预警

石油石化行业是一个高科技密集型行业&#xff0c;投资巨大、人员众多&#xff0c;各产业价值链的关联度较高&#xff0c;大型石油石化企业实现了上中下游产业的一体化协同发展。随着工业4.0时代的来临&#xff0c;信息化和工业化融合&#xff0c;物联网、云计算等新技术的普及推…