Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String_Integer - Fatal编程技术网

检查字符串中的整数(java)

检查字符串中的整数(java),java,string,integer,Java,String,Integer,你好,第一篇帖子,希望我做得对。我目前遇到了一个问题,即如何确定字符串中的所有内容是否都是整数。我设法为选中的字符串中的每个字符获取“是”,但每次它循环遍历字符串中的每个字符时,我都会得到一个新的“是”,如果字符串中的每个字符都是整数,则只需要一个“是” import java.util.Scanner; public class LabProgram { public static void main(String[] args) { Scanner scnr = new Scanne

你好,第一篇帖子,希望我做得对。我目前遇到了一个问题,即如何确定字符串中的所有内容是否都是整数。我设法为选中的字符串中的每个字符获取“是”,但每次它循环遍历字符串中的每个字符时,我都会得到一个新的“是”,如果字符串中的每个字符都是整数,则只需要一个“是”

import java.util.Scanner; 

public class LabProgram {
public static void main(String[] args) {
  Scanner scnr = new Scanner(System.in);
  String userString;
  int i;

  userString = scnr.next();

  for (i = 0; i < userString.length(); ++i) {
     if (Character.isDigit(i) == true) {

     }
     System.out.print("yes");
  }      
}
}
import java.util.Scanner;
公共类实验室计划{
公共静态void main(字符串[]args){
扫描仪scnr=新扫描仪(System.in);
字符串用户字符串;
int i;
userString=scnr.next();
对于(i=0;i

如果我输入“1995”,我的输出是“yesysyesys”,而我只需要一个“yes”的输出。

使用Apache Comms lang,您可以使用
StringUtils.isNumeric(您的字符串)
这将返回一个布尔值

如果你想按自己的方式做,试试这个

  userString = scnr.next();
  boolean isStringNumeric=true;

  for (i = 0; i < userString.length(); ++i) {
     isStringNumeric = Character.isDigit(userString[i]);
     if (!isStringNumeric) {
         break;
     }
  } 
 if(isStringNumeric){
    System.out.println("Yes");
} else{
     System.out.println("No");   
}
userString=scnr.next();
布尔值isStringNumeric=true;
对于(i=0;i
代码中的问题是,
System.out.println
在for循环中,这就是为什么对于四个长度的字符串,输出为“yesyesyesys”

在这种情况下,您可以假设字符串中的每个字符都是数字,然后检查每个字符,直到找到一个不是数字的字符为止,让我们用一段时间:

    String word = "1992";
    boolean isDigit = true;
    int i = 0;

    while (i < word.length() && isDigit) {
        isDigit = Character.isDigit(word.charAt(i));
        i++;
    }

    if(isDigit) {
        System.out.println("yes");
    }

“希望我做得对”=>你的“问题”几乎没有标点符号、大写字母和段落,很难阅读。此外,请详细解释您的程序失败的地方。检查相反的情况然后中断循环可能更容易。你应该在循环之后,而不是在循环内部呈现结果。@Seelenvirtuose在第一篇文章中修复了它,他认为语法不会对我的要求产生太大的影响,因为只有一小段。在底部我列出了我失败的地方和我需要的东西。@JoakimDanielson检查相反的地方,就像检查它是否为假一样。这回答了你的问题吗?还没教过呢!在第四章中,我们所学到的最接近的东西是isDigit()。@EduardoBeltran我添加了一个代码,可以用你的编码方式帮助你。尝试了一下,仍然没有得到我需要的输出。用“1995!!”这样的例子进行了测试,不输出“否”,继续得到“是”。请不要编写
!=是的
好吧,你的代码包含字符。isDigit(i)
这显然总是正确的。Ofc那不行,谢谢!那运行得很好。正在讨论切换到while循环,让它运行字符串的每个字符,直到如您所说,一个不是数字但仍然相信for循环是正确的方法。我理解了你的大部分代码,我将亲自检查并测试自己,以确保我理解了每一步。如果word='1992w',这将是错误的。当字符不是数字时,应该中断循环。
    if(word.chars().allMatch(Character::isDigit)) {
        System.out.println("yes");
    }