黑马程序员技术交流社区

标题: 关于java输入的疑问。 [打印本页]

作者: 金康俊    时间: 2015-3-7 11:07
标题: 关于java输入的疑问。
之前有接触过一些其他的编程语言,都有着用户输入的语句,比如c++的scanf,js也可以直接获取input标签里的value,那么java里该怎样让用户输入数据并获取呢?


作者: 倾城只为你来    时间: 2015-3-7 11:07
/*
参考这段程序,从屏幕输入一行字符并显示在下一行
支持jdk版本>=1.5
*/
import java.util.Scanner;

public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(str);
}
}


回复3楼2007-07-22 20:29举报 |
个人企业举报
垃圾信息举报

lyhk21
水1
java.util  
类 Scanner
java.lang.Object
java.util.Scanner
所有已实现的接口:  
Iterator<String>  

--------------------------------------------------------------------------------

public final class Scannerextends Objectimplements Iterator<String>一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。  

Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。  

例如,以下代码使用户能够从 System.in 中读取一个数:  

Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
再看一个例子,以下代码使 long 类型可以通过 myNumbers 文件中的项分配:  

Scanner sc = new Scanner(new File("myNumbers"));
while (sc.hasNextLong()) {
long aLong = sc.nextLong();
}扫描器还可以使用不同于空白的分隔符。下面是从一个字符串读取若干项的例子:  

String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close(); 输出为:  

1
2
red
blue 以下代码使用正则表达式同时解析所有的 4 个标记,并可以产生与上例相同的输出结果:  

String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input);
s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
MatchResult result = s.match();
for (int i=1; i<=result.groupCount(); i++)
System.out.println(result.group(i));
s.close(); 扫描器所使用的默认空白分隔符通过 Character.isWhitespace 来识别。不管以前是否更改,reset() 方法将把扫描器分隔符的值重置为默认空白分隔符。  

扫描操作可能被阻塞,而等待信息的输入。  

next() 和 hasNext() 方法及其基本类型 companion 方法(如 nextInt() 和 hasNextInt())首先跳过与分隔符模式匹配的输入,然后尝试返回下一个标记。在等待更多输入时 hasNext 和 next 方法都可能阻塞。hasNext 方法是否阻塞与其相关的 next 方法是否阻塞无关。  

findInLine(java.lang.String)、findWithinHorizon(java.lang.String, int) 和 skip(java.util.regex.Pattern) 方法的执行与分隔符模式无关。这些方法会尝试匹配与输入中的分隔符无关的指定模式,因此可用于分隔符无关的特殊环境中。在等待更多输入时这些方法可能阻塞。  

当某一扫描器抛出 InputMismatchException 时,该扫描器不会传递导致该异常的标记,因此可以通过其他某种方法来获取或跳过它。  

对于某些类型的分隔模式,可能返回空标记。例如,"\\s+" 模式不会返回空标记,因为它与该分隔符的多个实例匹配。而分隔模式 "\\s" 可能返回空标记,因为它一次只传递一个空格。  

扫描器可以从实现 Readable 接口的任何对象读取文本。如果对底层 readable 的 Readable.read(java.nio.CharBuffer) 方法的调用抛出 IOException,则扫描器认为已经到达了输入的结尾。底层 readable 最新抛出的 IOException 可以通过 ioException() 方法获取。  

如果 Scanner 关闭,且其输入源实现 Closeable 接口,则该输入源也将关闭。  

若没有外部同步,则 Scanner 的多线程使用是不安全的。  

除非另行说明,否则将一个 null 参数传递到 Scanner 的任何一个方法中都将抛出 NullPointerException。  

默认情况下扫描器会将数字解释为十进制形式,除非已经使用 useRadix(int) 方法设置了不同的基数。不管以前是否更改,reset() 方法将把扫描器的基数重置为10

作者: 小小迪    时间: 2015-3-7 11:23
在Java中控制台输入要用Scanner类
import java.util.Scanner;

public class Test {
        public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        System.out.println(str);
        }
}
作者: 倾城只为你来    时间: 2015-3-7 12:25
下面的示例代码实现了输入“回显”的功能,即将用户输入的内容重新显示到控制台,示例代码如下:

/**
* 读取控制台输入,并将输入的内容显示到控制台
*/
public class ReadConsole1 {
         public static void main(String[] args) {
                   try{
                            //提示信息
                            System.out.println("请输入:");
                            //数组缓冲
                            byte[] b = new byte[1024];
                            //读取数据
                            int n = System.in.read(b);
                            //转换为字符串
                            String s = new String(b,0,n);
                            //回显内容
                            System.out.println("输入内容为:" + s);
                   }catch(Exception e){}
         }
}
         在该示例代码中,从System.in中读取出用户的输入,然后将用户输入的内容转换为字符串s,然后输出该字符串的内容即可。
作者: chenlei2015    时间: 2015-3-7 12:57
:)
以上的同学基本都解答了,但是说的太多了,不知道同学有木有看完

总之,Java接收输入,就两句话搞定
1.    Scanner sc = new Scanner(System.in);     
2.    String str = sc.next();

在main()方法里写就行了,这个str就接收到你输入的字符串

程序实例:
import java.util.Scanner;

public class Test {
         public static void main(String[] args) {
         Scanner sc = new Scanner(System.in);
         String str = sc.next();
         System.out.println(str);
         }
}
作者: android-liu    时间: 2015-3-7 17:54
1.你可以使用java.util.Scanner对象;
具体做法就是
           1.导入java.util.Scanner包
           2.获取对象 Scanner s=new Scanner(System.in);
          3.获取用户输入的值 :int x=nexInt();
2.你也可以用流操作
具体做法是:
BufferedReader bf=new BufferedReader( new InputStreamReader(System.in))
String line=null;
while((line=bf.readLine))!=null)
{
      System.out.println(line);//line的数据就是你要获取的用户输入

}


作者: 罗晓飞    时间: 2015-3-11 22:24
你可以用这个接受键盘收入:String  str=new  Scanner(System.in).nextLine();

这一句就搞定。。。。。。。。。。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2