首页 > 解决方案 > 为学习算法手动分离数字的最佳方法是什么

问题描述

我正在学习 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);

        
    }
}

标签: javaalgorithmfunctionclassoop

解决方案


我能做些什么改进?你能给我什么建议?

采用Java 命名约定

  1. 方法名称是camelCase,以小写字母开头

  2. 字段和属性名称以及方法参数名称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


推荐阅读