黑马程序员技术交流社区

标题: 键盘录入数据的问题,求助 [打印本页]

作者: Hi.。    时间: 2015-12-23 20:04
标题: 键盘录入数据的问题,求助
我现在想根据键盘录入数据的类型不同(字符串或者数字)而进行不同的操作,该怎样判断呢?
作者: iori    时间: 2015-12-23 20:39
Scanner sc = new Scanner(System.in);
作者: iori    时间: 2015-12-23 20:40
Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
这是输入数值型。
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
这是输入字符串。
前面的improt java.util.Scanner;
这个我就不加了。
作者: Hi.。    时间: 2015-12-23 20:56
iori 发表于 2015-12-23 20:40
Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
这是输入数值型。

我意思是说,根据录入的类型不同,就进行不同的操作。
比如  我录入了一个字符串,就把我录入的字符串反转。
录入了一个 数字, 就把我录入的数字按照自然排序给排序
作者: 214652440    时间: 2015-12-23 21:10
输入的时候加上判断,然后判断后面跟上代码执行,反转和排序,就行了
作者: Hi.。    时间: 2015-12-23 21:14
214652440 发表于 2015-12-23 21:10
输入的时候加上判断,然后判断后面跟上代码执行,反转和排序,就行了

如何判断?能给代码提示一下吗?
作者: Hi.。    时间: 2015-12-23 21:31
我明白了。把正则表达式忘了,可以用正则来判断
作者: NUMONE    时间: 2015-12-23 21:52
楼上的,怎么用正则表达式判断呢,分享一下哇
作者: Accoss-x    时间: 2015-12-23 22:01
其实这个根本没有需求的,不要正则你也可以实现,你把输入的数据按字符串录入 然后转换成数组,在来一个个判断!
作者: Hi.。    时间: 2015-12-23 22:02
本帖最后由 Hi.。 于 2015-12-23 22:03 编辑
NUMONE 发表于 2015-12-23 21:52
楼上的,怎么用正则表达式判断呢,分享一下哇

通过字符串的 boolean matches(String regex)  方法,可以指定规则查看字符串是否匹配。通过
if(str.matches("[0-9]+")){

}
就可以判断是不是数字了。[0-9]表示 0~9的数字,+表示一次或多次。  也可以用[\\d]+表示
作者: Hi.。    时间: 2015-12-23 22:06
Accoss-x 发表于 2015-12-23 22:01
其实这个根本没有需求的,不要正则你也可以实现,你把输入的数据按字符串录入 然后转换成数组,在来一个个 ...

你这样做,如果我一个字符串"abc1d5",同时含有数字和字符,就出不来了。我发帖时就说这么想的
作者: 214652440    时间: 2015-12-23 22:35
  1. package com.wow.test3;

  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.Scanner;

  5. /*
  6. * 需求:键盘录入
  7. */
  8. public class test {
  9. public static void main(String[] args) {
  10.         Scanner sc = new Scanner(System.in);
  11.         System.out.println("请输入:....");
  12.         String zxc = sc.nextLine();
  13.         String regex = "[0-9]{1,999999}";
  14.         boolean flag = zxc.matches(regex);
  15.         if(flag){
  16.                 paixu(zxc);
  17.         }else{
  18.                 fazhuan(zxc);
  19.         }
  20.        
  21.        
  22. }

  23. private static void fazhuan(String zxc) {
  24.         //这个简单的多,我就不写了,下面看不懂的问我,我也不知道你要的是不是这个效果- -...
  25. }

  26. private static void paixu(String zxc) {
  27.         char[] s = zxc.toCharArray();
  28.         ArrayList list = new ArrayList();
  29.         for(char x :s){
  30.                 list.add(x);
  31.         }
  32.         Collections.reverse(list);
  33.         System.out.println(list);
  34.        
  35. }
  36. }
复制代码

试试效果把,只能写到这了,你看看行不行- -
作者: 214652440    时间: 2015-12-23 22:39
Hi.。 发表于 2015-12-23 21:14
如何判断?能给代码提示一下吗?

你是想那种效果?有种方法最简单,我给你说下思路
你的需求我试着捋一捋,你输入一组数字呢,就排序
输入字符串就反转,
那么反转和排序都是数组的才可以进行的动作,
那么首先.你选择接收数据的时候就得用String类型的
  1. package com.wow.test3;

  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.Scanner;

  5. /*
  6. * 需求:键盘录入
  7. */
  8. public class test {
  9. public static void main(String[] args) {
  10.         Scanner sc = new Scanner(System.in);
  11.         System.out.println("请输入:....");
  12.         String zxc = sc.nextLine();
  13.         String regex = "[0-9]{1,999999}";
  14.         boolean flag = zxc.matches(regex);
  15.         if(flag){
  16.                 paixu(zxc);
  17.         }else{
  18.                 fazhuan(zxc);
  19.         }
  20.        
  21.        
  22. }

  23. private static void fazhuan(String zxc) {
  24.         //这个简单的多,我就不写了,下面看不懂的问我,我也不知道你要的是不是这个效果- -...
  25. }

  26. private static void paixu(String zxc) {
  27.         char[] s = zxc.toCharArray();
  28.         ArrayList list = new ArrayList();
  29.         for(char x :s){
  30.                 list.add(x);
  31.         }
  32.         Collections.reverse(list);
  33.         System.out.println(list);
  34.        
  35. }
  36. }
复制代码

作者: 214652440    时间: 2015-12-23 22:41
那个正则1,9999是我实验的时候加上去的,你写个+就行了- -
作者: Hi.。    时间: 2015-12-23 22:49
本帖最后由 Hi.。 于 2015-12-23 22:53 编辑
214652440 发表于 2015-12-23 22:39
你是想那种效果?有种方法最简单,我给你说下思路
你的需求我试着捋一捋,你输入一组数字呢,就排序
输入字符 ...

你好,再给加点料。我说的是,把数字排序。意思是,如果输入  196445,给我返回 144569。你这里用了两个方法名做的,改进为用方法的重载来做。
再练练手哈哈。我就先不说了,自己做出来才最有意思
作者: 214652440    时间: 2015-12-23 22:56
Hi.。 发表于 2015-12-23 22:49
你好,再给加点料。我说的是,把数字排序。意思是,如果输入  196445,给我返回 144569。你这里用了两个方 ...

嘿嘿.我写成是数字反转了,你把他俩换一下- -
友情剧透:
排序可以使用Arrays工具类,- -
一面看电影一面写,所以写反了,,呵呵,加油,多交流啊
作者: 路路路路灯亮了    时间: 2015-12-23 23:02
这一波可以
作者: Hi.。    时间: 2015-12-23 23:15
214652440 发表于 2015-12-23 22:56
嘿嘿.我写成是数字反转了,你把他俩换一下- -
友情剧透:
排序可以使用Arrays工具类,- -

嗯嗯!一起!GO!
作者: icm    时间: 2015-12-23 23:22
应该先获取字符串,在获取数字,这样才不会出现字符串获取不到的问题,但最好都用nextLine(),当需要整型时通过Integer.parseInt(String str)得到整型。
作者: 冷光之神    时间: 2015-12-25 04:42
如果都是用输入的一行字符串的代码,那么判断输入的字符串中的每一个字符是否在0-9之间
作者: cj286    时间: 2015-12-25 10:57
Scanner中有接收各种类型的录入方法




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