【问题标题】:Converting string to java type将字符串转换为java类型
【发布时间】:2014-02-14 19:37:55
【问题描述】:

我有以下代码,我需要将我的字符串 o1 和 o2(由用户输入)转换为 Fraction 类 f1 和 f2。我不知道如何做到这一点,任何帮助将不胜感激!

更新:setter 和 getter 已经到位,我这里只粘贴了代码的相关方面。一切正常,但我不知道如何为 f1 赋值(其值应为 o1)。

private int numerator;
private int denominator;
public Fraction(){
    numerator = 0;
    denominator = 1;
}

public static void main(String[] args){
    String o1 = null;
    String o2 = null;

    Scanner scan = new Scanner(System.in);
    System.out.println("Input Operand 1, separate numerator and denominator by '/'.");
    o1 = scan.next();
    System.out.println("Input Operand 2, separate numerator and denominator by '/'.");
    o2 = scan.next();

    Fraction f1 = new Fraction();
    int n1 = f1.getNumerator();
    int d1 = f1.getDenominator();
    Fraction f2 = new Fraction();
    int n2 = f2.getNumerator();
    int d2 = f2.getDenominator();

    Fraction A = new Fraction(n1, d1);
    Fraction B = new Fraction(n2,d2);
    A.printF(add(A,B));
    A.printF(sub(A,B));
    A.printF(multiply(A,B));
    A.printF(divide(A,B));      
}

【问题讨论】:

  • 需要更多详细信息...用户输入,例如“2/5”,你想用分子 2 和分母 5 创建一个“分数”,而“分数”是你自己的班级? Apache 的 NumberUtils 具有将 String 转换为 int 的方法,但您要做的是将输入拆分为“/”以获取分子和分母……然后存储它们。

标签: java string class


【解决方案1】:

如果我理解正确的话……

第一步:斜线分割

String[] o1Parts = o1.split("/");
String[] o2Parts = o2.split("/");

第二步:转换为int

int o1Numerator = Integer.parseInt(o1Parts[0]);
int o1Denominator = Integer.parseInt(o1Parts[1]);

int o2Numerator = Integer.parseInt(o2Parts[0]);
int o2Denominator = Integer.parseInt(o2Parts[1]);

第三步也是最后一步:创建Fraction 对象

Fraction o1Fraction = new Fraction(o1Numerator, o1Denominator);
Fraction o2Fraction = new Fraction(o2Numerator, o2Denominator);

如果类没有这个构造函数,而只有setter:

Fraction o1Fraction = new Fraction();
o1Fraction.setNumerator(o1Numerator);
o1Fraction.setDenominator(o1Denominator);

Fraction o2Fraction = new Fraction();
o2Fraction.setNumerator(o2Numerator);
o2Fraction.setDenominator(o2Denominator);

注意事项

请注意,这段代码没有输入验证,所以如果你写的不是number/number,它会中断。另外,我没有编译测试它,所以可能会隐藏一两个语法错误,但这是基本思想。

【讨论】:

  • 这就是我在评论中所说的,但要求有些不清楚。这是一个很好的解决方案,假设要求是看起来的那样。
  • 太棒了,效果很好。非常感谢您的解释和帮助! :)
【解决方案2】:

您可以根据'/'分隔字符串,并设置Fraction类的分母属性的分子值如下:

        String o1 = "10/5";
        Fraction f1 = new Fraction();
        f1.setNumerator(Integer.parseInt(o1.substring(0,o1.indexOf("/"))));
        f1.setDenomerator(Integer.parseInt(o1.substring(o1.indexOf("/")+1)));

我没有找到属性的settergetter,创建它并使用上面的代码设置值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-29
    • 2013-07-17
    • 2020-05-21
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多