A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Hi.。 中级黑马   /  2015-12-23 20:04  /  2547 人查看  /  20 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我现在想根据键盘录入数据的类型不同(字符串或者数字)而进行不同的操作,该怎样判断呢?

20 个回复

倒序浏览
Scanner sc = new Scanner(System.in);
回复 使用道具 举报
Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
这是输入数值型。
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
这是输入字符串。
前面的improt java.util.Scanner;
这个我就不加了。
回复 使用道具 举报
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:31:29
7#
我明白了。把正则表达式忘了,可以用正则来判断
回复 使用道具 举报
NUMONE 中级黑马 2015-12-23 21:52:33
8#
楼上的,怎么用正则表达式判断呢,分享一下哇
回复 使用道具 举报
其实这个根本没有需求的,不要正则你也可以实现,你把输入的数据按字符串录入 然后转换成数组,在来一个个判断!
回复 使用道具 举报
Hi.。 中级黑马 2015-12-23 22:02:53
10#
本帖最后由 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:15
11#
Accoss-x 发表于 2015-12-23 22:01
其实这个根本没有需求的,不要正则你也可以实现,你把输入的数据按字符串录入 然后转换成数组,在来一个个 ...

你这样做,如果我一个字符串"abc1d5",同时含有数字和字符,就出不来了。我发帖时就说这么想的
回复 使用道具 举报
  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. }
复制代码

试试效果把,只能写到这了,你看看行不行- -
回复 使用道具 举报
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. }
复制代码
回复 使用道具 举报
那个正则1,9999是我实验的时候加上去的,你写个+就行了- -
回复 使用道具 举报
Hi.。 中级黑马 2015-12-23 22:49:58
15#
本帖最后由 Hi.。 于 2015-12-23 22:53 编辑
214652440 发表于 2015-12-23 22:39
你是想那种效果?有种方法最简单,我给你说下思路
你的需求我试着捋一捋,你输入一组数字呢,就排序
输入字符 ...

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

嘿嘿.我写成是数字反转了,你把他俩换一下- -
友情剧透:
排序可以使用Arrays工具类,- -
一面看电影一面写,所以写反了,,呵呵,加油,多交流啊
回复 使用道具 举报
这一波可以
回复 使用道具 举报
Hi.。 中级黑马 2015-12-23 23:15:32
18#
214652440 发表于 2015-12-23 22:56
嘿嘿.我写成是数字反转了,你把他俩换一下- -
友情剧透:
排序可以使用Arrays工具类,- -

嗯嗯!一起!GO!
回复 使用道具 举报
icm 中级黑马 2015-12-23 23:22:54
19#
应该先获取字符串,在获取数字,这样才不会出现字符串获取不到的问题,但最好都用nextLine(),当需要整型时通过Integer.parseInt(String str)得到整型。
回复 使用道具 举报
冷光之神 来自手机 中级黑马 2015-12-25 04:42:12
20#
如果都是用输入的一行字符串的代码,那么判断输入的字符串中的每一个字符是否在0-9之间
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马