class-java中字符类型与数字类型比较的问题

问题描述

java中字符类型与数字类型比较的问题

编写程序将由数字及字符组成的字符串中的数字截取出来并按顺序输出,例如: “ABC137GMNQQ2049PN5FFF”输出结果应该为 01234579。
代码如下 求解排序后的for循环输出为什么要这样写,有点不懂!
public class www {

public static void main(String[] args) {
String str="ABC137GMNQQ2049PN5FFF";
char[] beforechars=str.toCharArray();
char[] afterchars=new char[beforechars.length];
int j=0;
for(int i=0;i
if(beforechars[i]>='0' && beforechars[i]<='9'){
afterchars[j++]=beforechars[i];
}
}
Arrays.sort(afterchars);//排序
for(int i=(afterchars.length-j);i<afterchars.length;i++){

System.out.print(afterchars[i]);

}

}

}

解决方案

这个程序写得太麻烦

 /* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        String str="ABC137GMNQQ2049PN5FFF";
        char[] beforechars = str.toCharArray();
        Arrays.sort(beforechars);//排序
        int n = 0;
        while (beforechars[n] >= '0' && beforechars[n] <= '9') n++;
        char[] afterchars = new char[n];
        for(int i= 0;i<n;i++) {
            afterchars[i] = beforechars[i];
            System.out.print(beforechars[i]);
        }
    }
}

解决方案二:

你先使用正则去掉字母str.replaceAll("[A-Z]", ""),然后使用Arrays.sort()方法

解决方案三:

你的 for循环没写完吧
这个简单啊,就是String.toCharArray 会把字符串存在一个字符数组里面,就是上述的charBefordChars,然后循环遍历该数组,判断字符型里面的字符是不是 数字然后赋值给新的数组。

解决方案四:

上线的项目中被商户发现一个问题,当Amount数字类型前面带0时,会导致代码报错:var amount = 000120.00; // 脚本报错; if( amount > 200) {...}后来发现数字类型前面为0时,脚本会把它当成8进制进行运算;八进制后面还有个".00",肯定会报错;然后把代码改成了:var amount = "000120.00";? //字符串类型 ......
答案就在这里:数字类型和字符类型的比较

时间: 2024-11-03 02:52:21

class-java中字符类型与数字类型比较的问题的相关文章

基于java中byte数组与int类型的转换(两种方法)_java

java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型.下面有两种方式. public static byte[] int2byte(int res) { byte[] targets = new byte[4]; targets[0] = (byte) (res & 0xf

求解关于JAVA中字符编码的问题

问题描述 我们都知道JAVA中的char类型是占两个字节,如下:publicclassgetcharcode{publicstaticvoidmain(String[]args){Strings="A";Stringr="王";System.out.println(s.getBytes().length);System.out.println(r.getBytes().length);Charactera='a';Characterb='啊';Integerc=5;

Java中字符编码格式详解_java

一.前言 在分析Comparable和Comparator的时候,分析到了String类的compareTo方法,String底层是用char[]数组来存放元素,在比较的时候是比较的两个字符串的字符,字符用char来存储,此时,突然想到,Java里面的char可以存放中文吗?后来发现是可以的,并且由此也引出了Java中字符的编码格式问题. 二.Java存储格式 在Java中,如下代码获取了字符'张'的各种编码格式. import java.io.UnsupportedEncodingExcept

java中long数据类型转换为int类型_java

由int类型转换为long类型是向上转换,可以直接进行隐式转换,但由long类型转换为int类型是向下转换,可能会出现数据溢出情况: 主要以下几种转换方法,供参考: 一.强制类型转换 long ll = 300000; int ii = (int)ll; 二.调用intValue()方法 long ll = 300000; int ii= new Long(ll).intValue(); 三.先把long转换成字符串String,然后在转行成Integer long ll = 300000; i

Java中关于控制台读取数字或字符串的方法_java

Java中,int a = System.in.read();此句读取的是一个字符,然后返回的是对应字符的ASCII, 例如,控制台输入123,只读取一个字符1,对应的ASCII为49,则输出49,输入abc则读取a,对应的ASCII是97,则输出97: Scanner sc = new Scanner(System.in) int n = sc.nextInt();从控制台读取一个数. String c = sc.next();//从控制台读取字符串

java中泛型学习1之类型通配符(?)

  实体类 package cn.xy.model; /**  * 生物类  * @author xy  *  */ public class Living {  private String name;  public Living(String name)  {   super();   this.name = name;  }  public String getName()  {   return name;  }  public void setName(String name)  {

关于java中字符编码的一点心得,可能对初学者有点帮助

编码|初学|心得 这是张孝祥老师的java就业培训视频教程里面的一道题目有所变动编写下面的程序代码分析和观察程序的运行结果 import java.io.*;public class TestCodeIO {      public static void main(String[] args) throws Exception{            InputStreamReader isr = new InputStreamReader(System.in,"iso8859-1"

java中字符转换

转换 1.字符转换为ASCII值char y='a';int x = (int)y;System.out.println(x); 以上将得到a的ascii值97 -------------------------------- 2.十进制转换成16进制数Integer.toHexString(101) --------------------------------3.ASCII值转换成字符String aa=String.valueOf((char)13);

java组件-java中布局LinearLayout和组件ListView属于什么类型的数据?

问题描述 java中布局LinearLayout和组件ListView属于什么类型的数据? 因为我看到都可以定义为变量,所以他们肯定属于某种数据类型,肯定不是基本数据类型,那是引用数据类型吗,如果是引用数据类型,那取值范围是什么 解决方案 1.java中的数据类型分为基本类型与引用类型. 2.LinearLayout和ListView都是类,它们的实例是引用类型. 3.对于LinearLayout和ListView这样的类,你可以实例化无数个对象,所以它们没有取值范围. 4.有一些特殊的类:单例