Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查整数字符串_Java - Fatal编程技术网

Java 如何检查整数字符串

Java 如何检查整数字符串,java,Java,我应该写一个程序,接收一个表示整数的字符串作为输入,如果每个字符都是数字0-9,则输出yes 我已经阅读了我的章节,浏览了谷歌,但我仍然有困难。我知道我的代码乱七八糟,但我迷路了。我可能有一些零碎的东西是正确的,也可能是错误的,但这就是我所拥有的 import java.util.Scanner; public class LabProgram { public static void main(String[] args) { Scanner scnr = new Sca

我应该写一个程序,接收一个表示整数的字符串作为输入,如果每个字符都是数字0-9,则输出yes

我已经阅读了我的章节,浏览了谷歌,但我仍然有困难。我知道我的代码乱七八糟,但我迷路了。我可能有一些零碎的东西是正确的,也可能是错误的,但这就是我所拥有的

import java.util.Scanner; 

public class LabProgram {
   public static void main(String[] args) {
      Scanner scnr = new Scanner(System.in);
      String userString;
  // Add more variables as needed

      userString = scnr.next();
      boolean check1 = Character.isDigit(userString);
  
      while (check1 = True) {
         System.out.println ("Yes");
    }
      System.out.println ("No");

我哪里出错了?

正如人们在评论中指出的,您的代码中有一些错误
Character.isDigit
不能与字符串一起使用。您需要使用的是
Integer.parseInt(…)
。你可以把它放在一个试抓块里;如果解析成功,则打印是;如果引发异常,则打印否:

userString=scnr.next();
试一试{
int parsedValue=Integer.parseInt(userString);
//用parsedValue做一些事情
System.out.println(“是”);
}捕获(NumberFormatException NumberFormatException){
系统输出打印项次(“否”);
}

您可以使用正则表达式:

import java.util.regex.Matcher;
导入java.util.regex.Pattern;
//您的输入,也可以来自扫描仪
字符串输入=“1234567890”;
//正则表达式模式,以匹配仅由数字组成且不为空的字符串
字符串regex=“^[0-9]+$”;
//还要匹配负数:“^[\\-]?[0-9]+$”
//创建模式对象
Pattern=Pattern.compile(regex);
//创建匹配器对象
Matcher Matcher=pattern.Matcher(输入);
//检查输入是否匹配
if(matcher.find()){
System.out.println(“这是一个数字,耶!”);
};
正则表达式是如何工作的:

  • ^
    匹配输入的开头,以确保数字字符之前没有任何内容
  • [0-9]+
    告诉它匹配范围
    0-9
    一次或多次(
    +
    ),这也确保空字符串不匹配
  • $
    匹配字符串的结尾,以确保匹配后没有非数字
如果还想匹配负数,则正则表达式还有一个附加部分:
[\\-]?
如果打开,则匹配一个减号;如果没有符号(
),则匹配一个减号

也可能是您尝试的方式:

//打开扫描仪
扫描仪=新的扫描仪(System.in);
//从扫描仪读取用户输入
字符串输入=scanner.next();
//假设它是一个数字,直到我们在下面找到一个非数字字符
字符串isNumber=true;
//在用户输入的每个字符上循环
for(字符:输入){
//检查字符是否不是数字
如果(!Character.isDigit(Character)){
System.out.println(“非数字:”,字符);
//将is number变量设置为false
isNumber=false;
//中断循环,因为它不能是数字,因为我们已经找到了一个非数字
打破
};
};
System.out.println(“它是一个数字吗?”,isNumber);

嗯,这段代码编译吗。您将if语句与while循环混为一谈。2.你把比较(=)和分配(=)3弄混了。您在
true
中有一个输入错误。Java是区分大小写的,这个关键字都是小写的。4.您缺少用于关闭方法的括号。您是否了解了类
java.lang.Integer
中的方法?是只获取一次输入,还是一次又一次地获取输入?我看到您正在使用
循环。对于这个赋值,它给出了一个提示,说使用循环和Character.isDigit()函数,但是我在哪里可以找到有关该函数的任何信息,请参阅本章。所以我不知道我是否调用了这个函数。