java - 为学习算法手动分离数字的最佳方法是什么
问题描述
我正在学习 Java,想知道如何在同一行中获得两个数字。
这个算法可以吗,我可以做些什么改进?你能给我什么建议?
import java.util.Scanner;
public class Main{
public static int Separate(String Values, int Order){
String toReturn = "";
int Counter = 0;
for(int Iterator = 0; Iterator < Values.length(); Iterator = Iterator + 1){
if(Values.charAt(Iterator) == ' ') {
if(Order == Counter) break;
else{
toReturn = "";
Counter = Counter + 1;
}
}
else toReturn += Values.charAt(Iterator);
}
return Integer.parseInt(toReturn);
}
public static void main(String[] args){
Scanner Entry = new Scanner(System.in);
System.out.print("Enter two numbers separated by space: ");
String Number = Entry.nextLine();
int Frst = Separate(Number, 0);
int Scnd = Separate(Number, 1);
}
}
解决方案
我能做些什么改进?你能给我什么建议?
采用Java 命名约定:
方法名称是
camelCase
,以小写字母开头字段和属性名称以及方法参数名称
camelCase
也是
在 Java 中,基本上只有类和接口名称以大写字母开头。
public static int separate(String values, int order){
String toReturn = "";
int counter = 0;
for(int iterator = 0; ...) { ...
否则我会说:这个算法对于初学者来说非常可靠。很容易理解发生了什么。
当然,Java 提供了更复杂的工具来解决这个问题,例如使用带有 的正则表达式myString.split(...)
或带有 的流IntStream intStream = myString.chars()
。
最后但同样重要的是,您可以添加异常处理:如果Integer.parseInt
给定一些非数字会发生什么?它会崩溃。
try {
return Integer.parseInt(toReturn);
} catch (NumberFormatException e) {
// when "toReturn" cannot be parsed to an int, return a
// default value instead of crashing your application
return 0;
}
或者如果崩溃是期望的行为,或者您可以确保永远不会使用非法字符串调用此方法,请保持原样(= 不要添加try catch
)
推荐阅读
- tensorflow - 在欺诈检测数据集上使用 tensorflow2 编码 SVM 时遇到问题
- c# - 前向消除实施的问题
- c# - SSIS - 按表字段对电子邮件进行 SSRS 报告分组
- r - R Limma P 值与细胞因子数据的倍数变化
- python - 更改 bootstrap4 按钮“搜索”文本
- php - WooCommerce | 显示最低价(包括缺货) - PHP
- ruby-on-rails - #IntuitOAuth::Client 的未定义方法 'connection=' - QuickBooks oAuth 2.0
- nginx - 为多个 React 应用程序配置 Nginx
- hive - Hive 中的字符串到时间戳转换
- powershell - Powershell 日期范围