1.用Scanner类:
import java.util.Scanner;
public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = sc.nextLine();
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
System.out.println("请输入你的工资:");
float salary = sc.nextFloat();
System.out.println("你的信息如下:");
System.out.println("姓名:"+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);
}
这段代码已经表明,Scanner类不管是对于字符串还是整型数据或者float类型的变量,只需做一点小小的改变,就能够实现功能。
2.其中Scanner in = new Scanner(System.in);这一句是关键。这一句的意思是:通过new Scanner(System.in)创建一个Scanner,控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给Scanner,作为扫描对象。
然后如果想要获取输入的内容,就需要调用Scanner的nextLine()方法,因此就用到了String name = in.nextLine(),int age = in.nextInt(),double height = in.nextDouble()这三句来获取输入的内容。
3.运行一下就会发现程序并没有让你输入苹果的英文,而是直接回车了,那是因为你输入完年龄之后的那个回车被nextLine()吃掉了,因此它并没有输出什么,但如果用in.next()的话,它是可以输入的。(下面是两种运行结果)
区别:nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。
next()会自动消去有效字符前的空格,只返回输入的字符,不能得到带空格的字符串。
1、首先创建一个Scanner实例对象。
2、我们可以调用的Scanner类的next()方法来获取输入的字符串。
3、查看下面的结果你会发现,next()方法只能读取空格前的一个段字符串。
4、所以使用这个方法,你输入的数据不能有空格。
5、另外接收字符串,一般使用nextLine()方法。
6、查看下面的运行输出结果。发现nextLine(),一次性读取一行数据.
7、当然接收字符串还可以使用BufferedReader类来接收。
8、然后调用它的readLine()方法来获得字符串。
String内部使用一个char[]数组来存放字符串的内容,数组下标是整型(也可以参考String的构造方法String(char value[], int offset, int count) ,可以知道字符数量是用整型表示),整型(Java规定32位)表示范围是2G,也就是说,Java数组最大的长度是2G,即字符串不能超过2G个字符。
您好,很高兴能回答你的问题。
java实现循环输入方法。
双for
Scanner sc = new Scanner(System.in);
int i,a,t = sc.nextInt();
for(;0<t;t--){
for(i=0;(i<n)&&(a<=10);i++) a = sc.nextInt();
if(10<a) System.out.println(n);
}
用getLine() 或者其他流类的getLine() 来读取就行了
数据验证是一种用于验证输入数据是否符合特定规则或格式的技术,可以防止应用程序因为无效或错误的数据而出现异常或崩溃。以下是一些常见的数据验证使用方法:
服务器端验证:在服务器端对输入数据进行验证,可以通过编写服务器脚本语言代码(如PHP、Python、Java等)实现。服务器端验证可以通过限制用户输入的数据长度、数据类型、字符集等方式来确保输入数据的合法性。
客户端验证:在客户端(如浏览器)对输入数据进行验证,可以通过JavaScript或其他脚本语言来实现。客户端验证可以在用户提交数据之前对数据进行验证,从而帮助用户及时发现错误并进行修改。
数据库验证:在数据库中对输入数据进行验证,可以通过在数据库表中定义字段类型、长度、约束等方式来实现。数据库验证可以确保数据存储在数据库中时是有效且正确的。
第三方验证库:使用第三方验证库可以简化验证代码的编写,提高验证的准确性和效率。例如,使用jQuery Validation插件可以方便地在客户端进行验证。
总之,数据验证是一项重要的技术,能够有效地提高应用程序的稳定性、安全性和可靠性。
Windows 系统的文件名受两方面的限制。
1、文件名长度最大为255字符(其中包括文件扩展名)。
2、文件的全路径名长度最大为260字符。基于以上两点,文件名并非只要小于255字符就可,还要受其所在路径深度的制约。
严格来说,String确实有长度限制。
1、String内部使用一个char[]数组来存放字符串的内容,数组下标是整型(也可以参考String的构造方法String(char value[], int offset, int count) ,可以知道字符数量是用整型表示),整型(Java规定32位)表示范围是2G,也就是说,Java数组最大的长度是2G,即字符串不能超过2G个字符。
2、Java的数组大小还有没有别的限制?事实上数组大小不能超过Java堆的大小,而Java堆的最大尺寸可以通过启动参数指定,如果Java堆开得足够大,数组的最大长度是可以不断增大的。
3、所以,理论上,字符串不能超过2G个字符,少于2G个字符都有可能。
java防SQL注入,最简单的办法是杜绝SQL拼接,SQL注入攻击能得逞是因为在原有SQL语句中加入了新的逻辑,如果使用PreparedStatement来代替Statement来执行SQL语句,其后只是输入参数,SQL注入攻击手段将无效,这是因为PreparedStatement不允许在不同的插入时间改变查询的逻辑结构 ,大部分的SQL注入已经挡住了, 在WEB层我们可以过滤用户的输入来防止SQL注入比如用Filter来过滤全局的表单参数
01 import java.io.IOException;
02 import java.util.Iterator;
03 import javax.servlet.Filter;
04 import javax.servlet.FilterChain;
05 import javax.servlet.FilterConfig;
06 import javax.servlet.ServletException;
07 import javax.servlet.ServletRequest;
08 import javax.servlet.ServletResponse;
09 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11 /**
12 * 通过Filter过滤器来防SQL注入攻击
13 *
14 */
15 public class SQLFilter implements Filter {
16 private String inj_str = "'|and|exec|insert|select|delete|update|count|*|%
|chr|mid|master|truncate|char|declare|;|or|-|+|,";
17 protected FilterConfig filterConfig = null;
18 /**
19 * Should a character encoding specified by the client be ignored?
20 */
21 protected boolean ignore = true;
22 public void init(FilterConfig config) throws ServletException {
23 this.filterConfig = config;
24 this.inj_str = filterConfig.getInitParameter("keywords");
25 }
26 public void doFilter(ServletRequest request, ServletResponse response,
27 FilterChain chain) throws IOException, ServletException {
28 HttpServletRequest req = (HttpServletRequest)request;
29 HttpServletResponse res = (HttpServletResponse)response;
30 Iterator values = req.getParameterMap().values().iterator();//获取所有的表单参数
31 while(values.hasNext()){
32 String[] value = (String[])values.next();
33 for(int i = 0;i < value.length;i++){
34 if(sql_inj(value[i])){
35 //TODO这里发现sql注入代码的业务逻辑代码
36 return;
37 }
38 }
39 }
40 chain.doFilter(request, response);
41 }
42 public boolean sql_inj(String str)
43 {
44 String[] inj_stra=inj_str.split("\\|");
45 for (int i=0 ; i < inj_stra.length ; i++ )
46 {
47 if (str.indexOf(" "+inj_stra[i]+" ")>=0)
48 {
学习资源
百度搜索圈T社区(www.aiquanti.com) 免费视频教程