Java里遇到的一些问题
来源:互联网 发布:js修改div高度 编辑:程序博客网 时间:2024/06/05 15:45
1·字符串如何转化为int型数字?
使用int的包裹类型Integer.parseInt(String); //无法用前缀(int)强制转换,是因为两种数据类型没有包含关系。
2·由于char类型的数据储存在内存里的是Unicode表所对应的数字,所以 char a='6';
(int)a;
也并不能得到int型的数字6,而是到Unicode表里的对应数字6的54
那么如何由char得到int类型数据呢?
(1)将char转化为String类型,比如 a=Integer.parseInt(char a+"");
就可以用parseint函数再转化为int类型了。
(2)我们可以利用巧妙的1-9在Unicode表中相对差就是本身数字大小的特点: int a='6'-'0';
这样就得到了int型的数字。
3·关于多组输入
一般题目里关于多组输入会有组数提示,比如第一行输入一个正整数表示接下来要接受的组数。
当遇到不确定输入组数时,if(in.hasNext())
或者if(in.hasNextLine())
可以用来判断是否停止输入。
4·小数如何四舍五入到指定位数?
java里的Math类非常强大,其中的round函数就可以四舍五入到整数位。如果想要精确到指定位数,则可以先将数放大10^n倍,四舍五入后再缩小10^n倍。
例如:
double n=3.1415926; System.out.println((double)(Math.round(n*100))/100);
注意,round函数返回的是int或long型数据,需转化才能得到小数。
我们经常要将数字进行格式化,比如取2位小数,这是最常见的。Java 提供 DecimalFormat 类,帮你用最快的速度将数字格式化为你需要的样子。下面是一个例子:
[java] view plain copy importjava.text.DecimalFormat; publicclassTestNumberFormat{ publicstaticvoidmain(String[]args){ doublepi=3.1415927; //圆周率 //取一位整数 System.out.println(newDecimalFormat("0").format(pi)); //3 //取一位整数和两位小数 System.out.println(newDecimalFormat("0.00").format(pi)); //3.14 //取两位整数和三位小数,整数不足部分以0填补。 System.out.println(new DecimalFormat("00.000").format(pi));// 03.142 //取所有整数部分 System.out.println(newDecimalFormat("#").format(pi)); //3 //以百分比方式计数,并取两位小数 System.out.println(new DecimalFormat("#.##%").format(pi)); //314.16% longc=299792458; //光速 //显示为科学计数法,并取五位小数 System.out.println(newDecimalFormat("#.#####E0").format(c)); //2.99792E8 //显示为两位整数的科学计数法,并取四位小数 System.out.println(newDecimalFormat("00.####E0").format(c)); //29.9792E7 //每三位以逗号进行分隔。 System.out.println(newDecimalFormat(",###").format(c)); //299,792,458 //将格式嵌入文本 System.out.println(newDecimalFormat("光速大小为每秒,###米。").format(c)); } }
DecimalFormat 类主要靠 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。上面的例子包含了差不多所有的基本用法,如果你想了解更多,请参考 DecimalFormat 类的文档。
5·程序设计原则
在城堡游戏那一章学到的一些东西我觉得很重要,有必要记下来。
<1>消除代码重复:相同的代码代表了同样的操作,应该把它们写进一个函数,用接口来实现调用。
<2>降低代码耦合:类与类之间应当尽量降低联系,以免牵一发而动全身。同样的,对于在一个类中调用其他类的成员变量应当尽量避免。可以在自己的类中实现操作,然后利用接口调用。尽量使用private的成员变量。
<3>可扩展性:由于考虑到将来代码的更新,维护,直接将我们需要使用的变量做成成员变量也是不太好的,可以用容器存放这些可能会拓展的变量,这样调用和维护都会变得简单一些。
<4>框架:我们希望做到将操作统统分开,单独处理,主类里只留下框架加数据的模式,这样当程序的框架确定好了以后,层次就会很鲜明,由很多类来共同完成任务。
6·创建一个对象与声明一个对象有什么区别?
声明一个对象,在超出对象的作用范围时,会自动释放资源
new一个对象,如果你不显式释放资源,哪怕你结束程序也不能收回这些资源,可以用delete释放。
(暂时我也不懂,百度来的半知不解,待填坑。)
7·c语言中的scanf(“%d”,&n)=EOF和java中的in.hasNext()有一点区别,前者记录了读到的数据,而后者没有读到,得再次赋值,n=in.nextInt();
8·split()函数用 “|”来分割多个分隔符,正则表达式前加\。
- Java里遇到的一些问题
- react-native里TextInput遇到的一些问题及解决方案
- 最近工作里遇到的一些问题,记录下来
- VS13里写C遇到的一些问题
- react-native里TextInput遇到的一些问题及解决方案
- 关于初学JAVA里的一些问题!
- java里的一些经典问题
- 关于 Java解惑 里的一些问题
- Java学习中遇到的一些问题
- java学习会遇到的一些问题!
- 学习Java中遇到的一些问题
- 初学Java遇到的一些问题
- java AES加密遇到的一些问题
- java操作MongoDB遇到的一些问题
- java泛型中遇到的一些问题
- java面试时候遇到的一些问题
- Java遇到的一些问题(一)
- Java遇到的一些问题(二)
- 重学数据结构 完整顺序表(工程文件)
- 架构师之路(5)100亿数据1万属性数据架构设计
- RPC框架简单原理
- 第一章 Linux概述 课后问答题
- JSF标签学习
- Java里遇到的一些问题
- MyBatis中大于号以及小于号的表达方式
- 通过ping++平台完成移动端H5支付
- 微信获取openid
- ECMAScript6新增功能续
- Mybatis使用注解的方式CRUD包括批量插入更新
- Linux运维面试必备
- 关闭selinux
- 神经机器翻译中的Attention机制