精华内容
下载资源
问答
  • String message = “Welcome to Java”;String实际上与System类,JOptionPane类和Scanner类一样,都是一个Java库中预定义的类。我们在操作时,可以进行两个字符串的连接,如果操作数之一是字符串,加号...

    1.String类型

    char类型只能表示一个字符,为了表示一串字符,使用成为String(字符串)的数据类型,例如下述代码将消息声明为一个字符串。

    String message = “Welcome to Java”;

    String实际上与System类,JOptionPane类和Scanner类一样,都是一个Java库中预定义的类。我们在操作时,可以进行两个字符串的连接,如果操作数之一是字符串,加号(+)就是连接运算符,如果操作数之一不是运算符(比如说一个数字),要先将非字符串值转换为字符串,再与另一个字符串连接起来。下面举几个例子:

    String s = “Chapter”+2;输出结果为Chapter2

    String s1 = “Chapter”+’B’;  输出结果为ChapterB

    再举个例子来说,i=1,j=2

    System.out.println(“i+i is”+i+j); 输出结果为i+j is 12

    因为如果要先强制执行i+j,需要将i+j用括号括起来。

    前面几篇文章我们写到了从控制台读取键盘键入的数字,那么为了从控制台读取字符串,我们一般调用Scanner对象上的next()方法,比如说我们从控制台读取三个独立的字符串,中间用空格分隔。程序清单如下:

    Scanner input = new Scanner(System.in);

    System.out.println(“Please enter three strings:”);

    String s1 = input.next();

    String s2 = input.next();

    String s3 = input.next();

    System.out.println(“s1 is”+s1);

    System.out.println(“s2 is”+s2);

    System.out.println(“s3 is”+s3);

    这样我们输入 Welcome to java 会输出s1=Welcome,s2=to,s3=java,其中next()方法读取以空白字符结束的字符串(即’\t’,’\f’,’\n或者’\r”)。除了这种方法外,我们还可以通过nextLine()方法读取一整行文本。nextLine()方法读取以按下回车键为结束标志的字符串,下面举个例子。

    Scanner input = new Scanner(System.in);

    System.out.println(“Please enter a string:”);

    String s = input.nextLine();

    System.out.println(“the string is”+s);

    2.从输入对话框获取输入

    我们可以从控制台获取输入,通过调用JOptionPane.showInputDialog方法,从一个输入对话框中获取输入。

    String input = JOptionPane.showInputDialog(“Enter an input”)

    136be34314a57ba454d97dfa8ef5d707.png

    当执行这个方法时,如上图所示,会显示一个对话框,让你键入输入值,输入一个字符串后,单机ok接受输入,并关闭对话框,从该方法中返回的是一个字符串,这种方式中间为表示提示信息的字符串。

    另一种为了更好的限定对话框的具体信息,使用如下语句:

    String input = JOptionshowInputDialog(null,”Enter an input”,”Input Dialog Demo”,JOptionPane.QUESTION_MESSAGE);具体解释一下,第二个字符串为提示信息的,对话框中间显示的,第三个字符串为对话框左上角显示的字符串,最后一个字符串为疑问图像,具体运行效果如下图所示:

    136be34314a57ba454d97dfa8ef5d707.png         下一篇文章我们将举实例来运行对话框,以及假设语句,希望我们大家一起学习,共同进步,谢谢。

    展开全文
  • 不知道你是否还记得你的第一次计算机编程。我对“第一次”记忆犹新,那是一个很神奇的时刻。...美妙的时刻就此凝固了,计算机毫无差错地显示出:welcome !!! roc.如果现在让你用 Shell 来实现同样效果的程...

    不知道你是否还记得你的第一次计算机编程。我对“第一次”记忆犹新,那是一个很神奇的时刻。当我把有生以来编写的第一个 C 程序交给计算机执行时,黑色的屏幕上显示出了一行字“please input your name:”。

    我怀着无比激动的心情写下我的名字“roc”,然后按下回车。美妙的时刻就此凝固了,计算机毫无差错地显示出:

    welcome !!! roc.

    如果现在让你用 Shell 来实现同样效果的程序,不知道你是不是能很快就写出来呢?

    本文就来帮你实现这个程序,在实现该程序之前,我们还是先来学习一下 Linux 系统中最擅长倾听的命令——read 吧。

    倾听键盘的声音

    read 命令用来倾听标准输入或文件输入,并把信息存放到变量中。从 read 命令的定义可以看出,倾听键盘是 read 的主要职责之一。

    现在,我们用 Shell 来模拟一下上面的 C 程序吧:

    #!/bin/bash

    echo -n "please input your name:"

    read name

    echo "welcome !!! $name"

    exit 0

    就这么简单,使用 read 命令来倾听用户的输入,并把用户的输入内容自动保存到指定的 name 变量中,最后使用 echo 实现输入内容的显示。

    上面的 Shell 脚本是不是已经是最精简的了?当然不是,还可以继续精简,我们可以直接使用 read 自带的显示提示语功能,省略程序中的 echo 语句:

    #!/bin/bash

    read -p "please input your name:" name

    echo "welcome !!! $name"

    exit 0

    上面脚本中的 read 的-p选项就是用来显示提示语的。

    在这个例子中,我们只是让 read 来接收 name 变量的值,那么 read 可以同时接收两个甚至更多的变量吗?答案是可以的。

    #!/bin/bash

    read -p "please input your name and place:" name place

    echo "welcome $name to $place"

    exit 0

    看到了吗?read 后面可以指定两个变量 name 和 place,当用户输入完成时,read 会以空格来分割用户的输入内容,并把输入的内容分别存放到后面的变量中。

    按照这个规律,read 完全可以指定 3 个、4 个……N 个变量。需要注意的是,当用户的实际输入和程序期望输入的变量个数不等时,又会出现什么情况呢?

    这是一个好问题,比如上面的脚本期望用户输入 name 和 place 两个变量的值,而我们却故意输入一个数据或三个数据,这时来看看脚本的执行情况:

    示例一:只输入一个数据

    [roc@roclinux ~]$ ./test.sh

    please input your name and place: roc

    welcome roc to

    示例二:输入多个数据

    [roc@roclinux ~]$ ./test.sh

    please input your name and place:roc beijing shanghai tianjin

    welcome roc to beijing shanghai tianjin

    通过上面脚本的执行,我们可以得出以下的结论:

    如果输入的数据数量少于变量的个数,那么多余的变量不会获取到数据,即变量值为空。

    如果输入的数据数量多于变量的个数,那么超出的数据将都赋值给最后一个变量。

    还有一个非常特殊的情况,就是在编写脚本时,如果 read 命令后面没有写任何变量,脚本执行时,我们输入数据,那输入的数据会存放到哪里呢?

    对于这种极端情况,Shell 的设计者早就预料到了:用户的数据会存放到一个叫作 $REPLY 的环境变量中去。

    #!/bin/bash

    ##

    read -p "please input your name and place:"

    echo "welcome $REPLY"

    exit 0

    [roc@roclinux ~]$ bash test.sh

    please input your name and place:roc beijing

    welcome roc beijing

    read 非常乐于倾听用户的声音,但有的时候,用户长时间不输入,那 read 也可以有自己的后手。read 命令提供了-t选项,可以用来设置一个倾听的时限。如果超过所设置的时限的话,那么 read 的耐心也就到此为止喽。

    #!/bin/bash

    if read -t 5 -p "please input your name within 5s:" name

    then

    echo "welcome !!! $name"

    else

    echo "sorry, too slow"

    fi

    exit 0

    上面的脚本就使用了-t选项,用来指定等待输入的时长(秒)。

    上述脚本表示 read 会等待用户的输入,但丑话说在前,如果 5 秒内用户没有响应,那么 read 就会自动结束,并显示“sorry,too slow”来抱怨一下用户。可见,read 命令也可以有自己的态度的。

    密码输入场景

    还有一种使用场景非常特殊,就是密码输入,我们都不希望密码明文显示在屏幕上,万一被别人看到了,可就不妙了。对于这种场景,我们希望实现隐藏输入的效果,read 命令使用-s选项即可实现这样的效果:

    #!/bin/bash

    read -s -p "please input your code:" password

    echo "hehe, your password is $password"

    上面的程序使用了-s选项,它实现的效果是用户在输入的时候,屏幕上不显示任何信息。这样,是不是再也不用担心密码被别人看到了?

    内容来自文件

    前面我们说过,read 命令不仅能监听键盘输入,还能读取文件内容。上面的示例都在说键盘,下面就来说文件。

    首先,我们准备一个素材文件,其内容如下:

    [roc@roclinux ~]$ cat -n test.txt

    1 19248

    2 19247

    3 19246

    下面,我们为大家展示 read 命令的三种读取文件的方法。

    第一种方法:使用-u选项

    #! /bin/bash

    # assign the file descriptor to file for input fd # 3 is Input file

    exec 3< test.txt

    # read the file using fd # 3

    count=0

    while read -u 3 var

    do

    let count=$count+1

    echo "Line $count:$var"

    done

    echo "finished"

    echo "Line no is $count"

    # Close fd # 3

    exec 3

    上面的脚本通过“exec 3

    我们来看一下脚本的执行效果:

    # 执行效果

    [roc@roclinux ~]$ ./test.sh

    Line 1:19248

    Line 2:19247

    Line 3:19246

    finished

    Line no is 3

    第二种方法:使用管道

    #!/bin/bash

    count=1

    cat test.txt | while read line

    do

    echo "Line $count:$line"

    let count=$count+1

    done

    echo "finished"

    echo "Line no is $count"

    exit 0

    请注意上面的用法“cat test.txt|while read line”,通过这样的方式来遍历 test.txt 文件的内容,并按行赋值给变量 line。

    # 执行效果

    [roc@roclinux ~]$ ./test.sh

    Line 1:19248

    Line 2:19247

    Line 3:19246

    finished

    Line no is 1

    咦,有个问题。脚本最后输出的是 Line no is 1,怎么行数是 1 呢,明明是 3 才对啊?

    上面这个问题,是由于管道导致的。我们知道,管道的两边一般需要新建进程,当执行完 while 语句后,新进程也就结束了。而脚本中 count 是新进程中的自定义变量,进程结束后该变量也就消失了(自定义变量的生命周期结束)。当脚本执行 echo 时,显示的 count 变量是脚本中第一行定义的变量的值,而不是 while 语句中的那个 count 变量了,因而输出的结果当然就是 1 了。

    第三种方法:使用重定向

    #!/bin/bash

    count=0

    while read line

    do

    let count=$count+1

    echo "Line $count:$line"

    done < test.txt

    echo "finished"

    echo "Line no is $count"

    exit 0

    由于第二种方法中的 count 变量计数有误,所以我们才为大家介绍第三种方法,这种方法可以有效规避因为新建进程而导致的变量值无法保留的问题。

    运行脚本,看看执行结果是否符合预期:

    [roc@roclinux ~]$ bash test.sh

    Line 1:19248

    Line 2:19247

    Line 3:19246

    finished

    Line no is 3

    分析上面的第二种方法和第三种方法可以发现,它们最核心的区别是“管道技术”变成了“重定向技术”,从而成功规避了进程中新生成自定义变量的问题。

    神奇的换行符

    我们接着上面重定向的例子来说,我们把 test.txt 文件的内容稍微变动一下。

    [roc@roclinux ~]$ cat -n test.txt

    1 19248 \

    2 19247 \

    3 19246

    可以看到,我们在前两行的后面分别加上了一个反斜线(\),这个符号表示续行符,它实现的效果是“肉眼看上去是换行了,但是 Linux 认为并没有换行”。

    如果我们把这个文件作为上面例子的输入,那么会输出什么呢?我们来看一下实际效果:

    [roc@roclinux ~]$ ./test.sh

    Line 1:19248 19247 19246

    finished

    Line no is 1

    是不是和你想的一样?这就是续行符(\)的作用,read 命令在读取数据时,当读取到续行符(\)时,它不认为这是一行的结束,而是会继续读取下一行,直到遇到真正的换行符(\n)为止。

    这样一解释,大家就应该知道为什么脚本执行结果里只有 Line 1 了吧。

    其实在 read 读取到的数据中,所有的转义符表示的特殊含义都是起作用的,如果你不想让它们起作用的话,请使用-r选项吧。

    #! /bin/bash

    # assign the file descriptor to file for input fd # 3 is Input file

    exec 3< test.txt

    # read the file using fd # 3

    count=0

    while read -u 3 -r var

    do

    let count=$count+1

    echo "Line $count:$var"

    done

    echo "finished"

    echo "Line no is $count"

    # Close fd # 3

    exec 3

    上面的代码中,我们会发现“read-u 3-r var”这一行增加了-r选项,如果我们仍以含有续行符的那个文件为输入文件的话,输出的结果就变成:

    [roc@roclinux ~]$ ./test.sh

    Line 1:19248 \

    Line 2:19247 \

    Line 3:19246

    finished

    Line no is 3

    可以看到,续行符的作用被完全忽略了,原本的续行符(\)被当作原始的反斜线(\)符号了。这就是-r选项的威力,它的眼里不揉沙子,任何符号都没有特殊身份。

    最后,我们要特别说明的一点是,-r选项不仅对读取的文件内容有效,而且对键盘的输入也是有效的。

    展开全文
  • package welcome;import java.util.*;public class Shuzu {public static void main(String[] args){Scanner input =new Scanner(System.in)...System.out.println("在键盘输入第"+i+"个数字");a=input.nextint();...

    aa12b840ac1c69cabd6c0ec6b3283fc9.png

    package welcome;

    import java.util.*;public class Shuzu {

    public static void main(String[] args)

    {

    Scanner input =new Scanner(System.in);

    int i=0,a,b;System.out.println("在键盘上输入第"+i+"个数字");

    a=input.nextint();

    System.out.println("在键盘上输入第"+(i+1)+"个数字");

    b=input.nextint();

    int min,max;

    if(a>b)

    {

    max=a;}

    else

    {max=b;

    }

    if(max%2==0)

    System.out.print("最大数为: "+max",是偶数");

    else

    System.out.print("最大数为: "+max",是奇数");}}

    答案补充

    你肯定是没用Shuzu 这个名字 作为你的文件名把,还有 你的包名是 welcome吗   记得 包名 是welcome, 还有类名是 Shuzu ,不然 你把 public class Shuzu 里的 public 去掉.

    ◆◆

    评论读取中....

    请登录后再发表评论!

    ◆◆

    修改失败,请稍后尝试

    展开全文
  • 实验目的:用户端输入一个字符串,然后输出 实验步骤: 1.创建vim abc.sh 2.编辑代码如下 #!/bin/bash // shell类型 #a simple shell script example //注释 ...read name //读取来自键盘输入的变量 echo "welcome

    实验目的:从用户端输入一个字符串,然后输出

    实验步骤:
    1.创建vim abc.sh
    2.编辑代码如下

    #!/bin/bash                         //  shell类型
    #a simple shell script example      //注释
    #a function
    welcome()               // 函数
    {
    echo "Enter Your name:"
    read name          //读取来自键盘输入的变量
    echo "welcome $name"
    }
    echo "Linux world..."  //主过程
    welcome
    

    实验结果:
    在这里插入图片描述
    🧨🧨实验注意事项:
    1.做实验时要注意文件放的位置
    2.也可以使用sudo nano 文件名.sh,然后使用sh 文件名.sh 运行

    展开全文
  • read命令:接受标准输入键盘)或另一个文件描述符的输入。 echo -n "Enter your name:"; #-n使得echo不换行 read name; echo "Welcome $name";read -p "Enter your age:" age #-p直接在read命令行指定提示符 ...
  • 你要从键盘读入n个字符串,每个字符串的长度不确定,但是n个字符串的总长度不超过100000。你要利用字符指针数组将这n个字符串按照ASCII码顺序进行升序排序,然后再打印到屏幕上。字符串中可能包含ASCII码中的任意...
  • C#实验1

    2020-12-07 10:10:33
    从键盘输入名字,然后输出欢迎信息。 输入格式: 请在这里写输入姓名。例如: GaiFuShuai 输出格式: 请在这里描述输出,例如: Hello!What's your name? GaiFuShuai,Welcome to learn OOP using C++! 输入样例:...
  • 第一个C++程序 注释 //开头 单行注释 /* */ 多行注释 #include 预处理指令 发送给C++预处理器的一条消息 #include <iostream> 通知预处理器将输入/输出流头文件的内容包含到程序中 从键盘输入数据将数据输出到屏幕都...
  • 用户通过键盘输入指令,计算机接收到指令后,予以执行。也有人称之为字符用户界面 顾名思义 <em>XXX-CLI</em> 就是使用命令行生成的 <em>XXX</em> 程序。之前写过一款 基于 <em>nodeJs</em> 制作个性 ...
  • 从键盘接收用户输入的两个字符串,第一个代表用户名,第二个代表密码。 (1)如果用户名是SwpuIot,并且密码是123456,则输出:Welcome (2)如果用户名正确,密码不正确,输出:Mismatch (3)其他情况下,输出:NotExist...
  • 从键盘接收用户输入的两个字符串,第一个代表用户名,第二个代表密码。 (1)如果用户名是SwpuIot,并且密码是123456,则输出:Welcome (2)如果用户名正确,密码不正确,输出:Mismatch (3)其他情况下,输出:NotExist...
  • 7-2 判断登录信息--Java字符串比较

    千次阅读 2020-05-10 21:50:04
    从键盘接收用户输入的两个字符串,第一个代表用户名,第二个代表密码。 (1)如果用户名是SwpuIot,并且密码是123456,则输出:Welcome (2)如果用户名正确,密码不正确,输出:Mismatch (3)其他情况下,输出:NotExist...
  • shell-read

    2014-01-28 15:31:55
    shell - read 命令 最基本的用法: [code="java"] ... //参数-n的作用是不换行,echo默认是换行 ...read name //从键盘输入 echo "hello $name,welcome to my program" ...
  • 第一部分 C#语言概述第一章.略第二章....让用户从键盘输入自己姓名,然后在程序的屏幕打印一条出欢迎信息。using System;class Welcome { static void Main() { Console.Writeline("Please wri
  • Linux shell read指令学习

    2016-11-15 19:48:31
    linux read 命令 read -p(提示语句)-n(字符个数) -t(等待时间) -s(不回显) #!/bin/bash echo -n "Enter your name:" //参数-n的作用是不换行,...read name //从键盘输入 echo "hello $name,welcome to myprogram
  • 功能简介 获取commit -m 的信息,直接上传远程仓库。 echo -n "Enter your ...read msg #从键盘获取信息输入 echo "commit success!,your commit msg is $msg , welcome to my program" git add . git commit -m
  • 目前仅能够通过键盘输入,预留了文件导入的接口,后续会实现。代码写的很LOW,有些BUG到现在还没有解决。 来几张图: 附上代码:package wordCounter;import java.util.Scanner;public class WordCounter { ...
  • 第一个C#程序

    2012-06-25 12:40:00
    第一个程序非常简单,我们让用户通过键盘输入自己的名字,然后在屏幕上打印出一条欢迎信息。程序的代码是这样的: using System;class Welcome{static void Main(){Console.WriteLine("Please enter your name")...
  • 从键盘接收用户输入的两个字符串,第一个代表用户名,第二个代表密码。 (1)如果用户名是SwpuIot,并且密码是123456,则输出:Welcome (2)如果用户名正确,密码不正确,输出:Mismatch (3)其他情况下,输出:NotExist...
  • 第一个c++程序,welcome to ...如果字节流是设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作。C++
  • 另外应提供键盘式选择菜单实现功能选择。 二、总体设计 图1 车辆销售管理系统功能模块图 三、详细设计 3.1 详细设计思路 1.main()主函数 设置了程序的流程,结束程序。 2.select ( ) 选择函数 选择所想...
  • //用于从键盘接受一个数字字符1~4 switch (ch) { case '1':printf("\n %d*%d=%d\n", x, x, x*x);break; case '2':printf("\n %d*%d*%d=%d\n", x, x, x, x*x*x);break; case '3':printf("\n square root : ...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型 .28 4.2 引 用 类 型 .33 ...
  • C#微软培训资料

    2014-01-22 14:10:17
    3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型 .28 4.2 引 用 类 型 .33 ...
  • JAVA阶段模拟试题

    2011-10-03 10:03:24
    17在Java中,Scanner类提供控制台获取键盘输入的功能,下列语句()能够正确实例化Scanner类的对象,用于获得键盘输入的数据。(选一项) a) Scanner input = new Scanner(System.out); b) Scanner input = new ...
  • visio教程PDF

    热门讨论 2010-05-17 23:56:22
    2.1 操作Welcome to Visio 2000窗口 2.1.1 难备新的绘图 2.1.2 准备打开一个已经存在的文件 2.2 基本下拉菜单 2.2.1 File下拉菜单 2.2.2 Tools下拉菜单 2.2.3 Help下拉菜单 2.3 基本工具栏按钮...
  • Visio 2000 技术大全

    2010-05-01 13:38:29
    2.1 操作Welcome to Visio 2000窗口 2.1.1 难备新的绘图 2.1.2 准备打开一个已经存在的文件 2.2 基本下拉菜单 2.2.1 File下拉菜单 2.2.2 Tools下拉菜单 2.2.3 Help下拉菜单 2.3 基本...
  • vc++ 开发实例源码包

    2014-12-16 11:25:17
    ---暂停并 ----- -- - 上一曲------ 头开始播放 | 显示时间 | | | ---开始和暂停 ----------- 下一曲------ -------------------------------------- Linux内核完全注释附 如题,我没看。 MFC+消息循环贴图-...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

从键盘输入welcome