如何判断字符串中是否有数字? import java.util.*; 类Dis{ 静态布尔数字安装(字符串s){ 布尔结果=假; int i,j; char[]ch=s.toCharArray(); int x=通道长度; 对于(j=0;j
您的代码失败,因为“3”不等于3。字符3(即ch[j])将永远不会等于实际整数,因为它们具有不同的类型。如果您希望这样做,则应将If条件替换为:如何判断字符串中是否有数字? import java.util.*; 类Dis{ 静态布尔数字安装(字符串s){ 布尔结果=假; int i,j; char[]ch=s.toCharArray(); int x=通道长度; 对于(j=0;j,java,Java,您的代码失败,因为“3”不等于3。字符3(即ch[j])将永远不会等于实际整数,因为它们具有不同的类型。如果您希望这样做,则应将If条件替换为: import java.util.*; class Dis { static boolean Digitinstring(String s) { boolean result = false; int i, j; char[] ch = s.toCharArray(); int
import java.util.*;
class Dis {
static boolean Digitinstring(String s) {
boolean result = false;
int i, j;
char[] ch = s.toCharArray();
int x = ch.length;
for (j = 0; j < x; j++) {
for (i = 0; i <= 9; i++) {
if (ch[j] == i) {
System.out.println("True");
result = true;
} else {
result = false;
}
}
}
return result;
}
public static void main(String args[]) {
System.out.println("Enter the string");
Scanner ob = new Scanner(System.in);
String s = ob.nextLine();
System.out.println(Digitinstring(s));
}
}
更简单的方法是简单地使用
Character.getNumericValue(ch[j]) == i;
您的整个方法如下所示:
Character.isDigit(s.charAt(j));
公共静态布尔数字安装(字符串s){
对于(int i=0;i您的代码失败,因为“3”不等于3。字符3,即ch[j]将永远不会等于实际整数,因为它们具有不同的类型。如果您希望这样做,您应该用以下内容替换If条件:
import java.util.*;
class Dis {
static boolean Digitinstring(String s) {
boolean result = false;
int i, j;
char[] ch = s.toCharArray();
int x = ch.length;
for (j = 0; j < x; j++) {
for (i = 0; i <= 9; i++) {
if (ch[j] == i) {
System.out.println("True");
result = true;
} else {
result = false;
}
}
}
return result;
}
public static void main(String args[]) {
System.out.println("Enter the string");
Scanner ob = new Scanner(System.in);
String s = ob.nextLine();
System.out.println(Digitinstring(s));
}
}
更简单的方法是简单地使用
Character.getNumericValue(ch[j]) == i;
您的整个方法如下所示:
Character.isDigit(s.charAt(j));
公共静态布尔数字安装(字符串s){
对于(inti=0;i有一些问题。首先是您的else
块。请记住,在if(){1}else{2}
的情况下,必须始终执行两个块中的一个,要么是{1}
要么是{2}
这意味着您的结果将仅取决于最后一次测试,换句话说,取决于最后一个字符。
要解决此问题,请删除else
块,仅当您的测试将找到数字时,才让result
存储true
第二个问题是,在(ch[j]==i)
中,您正在比较char
和int
。因此,您的结果类似于
if('2'==2)
在Java中为false,因为'2'
的int表示是its,它是50
因此,正如您所看到的,像'2'==2
这样的条件与50==2
相同,这是错误的
要生成包含数字的所有字符,您只需为(char digit='0';digit编写,问题很少。首先是您的else
块。请记住,在if(){1}else{2}
的情况下,必须始终执行两个块中的一个,要么是{1}
要么是{2}
这意味着您的结果将仅取决于最后一次测试,换句话说,取决于最后一个字符。
要解决此问题,请删除else
块,仅当您的测试将找到数字时,才让result
存储true
第二个问题是,在(ch[j]==i)
中,您正在比较char
和int
。因此,您的结果类似于
if('2'==2)
在Java中为false,因为'2'
的int表示是its,它是50
因此,正如您所看到的,像'2'==2
这样的条件与50==2
相同,这是错误的
要生成包含数字的所有字符,您只需为(字符数字='0';数字写入,您会遇到以下问题:
if (Character.isDigit(ch)){
System.out.println("True");
return true;
}
或者修改for循环
if (ch[j] == i+'0') {
for(i='0';i您有以下问题:
if (Character.isDigit(ch)){
System.out.println("True");
return true;
}
或者修改for循环
if (ch[j] == i+'0') {
for(i='0';i/*注:48到57分别是0,1,2,…9的ascii值
代码变得更可读,现在不使用ascii值
*/
包装组件;
导入java.util.Scanner;
公共类Dis{
公共静态void main(字符串[]args){
System.out.println(“输入字符串”);
扫描器ob=新扫描器(System.in);
字符串s=ob.nextLine();
System.out.println(数字安装);
ob.close();
}
私有静态布尔数字安装(字符串s){
布尔结果=假;
对于(int j=0;j='0'和&s.charAt(j)/*注意:48到57分别是0,1,2,…9的ascii值
代码变得更可读,现在不使用ascii值
*/
包装组件;
导入java.util.Scanner;
公共类Dis{
公共静态void main(字符串[]args){
System.out.println(“输入字符串”);
扫描器ob=新扫描器(System.in);
字符串s=ob.nextLine();
System.out.println(数字安装);
ob.close();
}
私有静态布尔数字安装(字符串s){
布尔结果=假;
对于(int j=0;j 如果(s.charAt(j)>='0'&&s.charAt(j)您可以使用正则表达式来实现更紧凑的代码。正则表达式正好适合您的场景,即在字符串中查找特定模式。在数字安装中,您可以执行以下操作:
/* Note: 48 to 57 is ascii values of 0,1, 2,...9 respectively
code is made more readable ascii values are not used now
*/
package com;
import java.util.Scanner;
public class Dis {
public static void main(String[] args) {
System.out.println("Enter the string");
Scanner ob = new Scanner(System.in);
String s = ob.nextLine();
System.out.println(Digitinstring(s));
ob.close();
}
private static boolean Digitinstring(String s) {
boolean result = false;
for (int j = 0; j < s.length(); j++) {
if(s.charAt(j)>='0' && s.charAt(j)<='9')
{
result=true;
break;
}
}
return result;
}
}
如果字符串后面有任意数量的字符(.*)和数字(\\d)以及任意数量的字符(.*),则返回true。任意数量的字符都可以包含0
Swailem95的文章很好地解释了当前实现没有返回预期结果的原因。您可以使用正则表达式来实现更紧凑的代码。正则表达式正好适合您的场景,即在字符串中查找特定模式。在数字安装中,您可以执行以下操作:
/* Note: 48 to 57 is ascii values of 0,1, 2,...9 respectively
code is made more readable ascii values are not used now
*/
package com;
import java.util.Scanner;
public class Dis {
public static void main(String[] args) {
System.out.println("Enter the string");
Scanner ob = new Scanner(System.in);
String s = ob.nextLine();
System.out.println(Digitinstring(s));
ob.close();
}
private static boolean Digitinstring(String s) {
boolean result = false;
for (int j = 0; j < s.length(); j++) {
if(s.charAt(j)>='0' && s.charAt(j)<='9')
{
result=true;
break;
}
}
return result;
}
}
如果字符串后面有任意数量的字符(.*)和数字(\\d)以及任意数量的字符(.*),则返回true。任意数量的字符都可以包含0
Swailem95的文章很好地解释了为什么您当前的实现没有返回预期结果
if(ch[j]==i)
请更正上面提到的条件,以比较相同的对象类型,您当前使用的是不同的类型,这是不正确的。或者使用Character类中的内置isDigit方法
if(ch[j]==i)
请更正上面提到的条件以比较相同的对象类型,您当前使用的不同类型永远不会为真。或者使用字符类中的内置isDigit方法。删除其他部分。ch[j]