从字符串输入(Java)声明变量

时间:2017-10-15 00:47:43

标签: java

当我之前提出一个问题时,它有很多事,因为我不是很具体。这次我会尽力清楚。我已经阅读了类似标题的问题,但没有一个对我说清楚。

基本上,我被指派为我的AP comp sci课程制作一个小数计算器。此分配的第一个检查点是能够读取用户输入的分数而不会导致代码崩溃。例如," 1_1 / 2" " 1 /"或只是1.

到目前为止,我已经得到了以下内容 -

public static void identify() {
        Scanner console = new Scanner(System.in);
        String fraction = console.next();

        if(fraction.contains("_")) {
            int wholenumber = console.nextInt();
            int numerator = console.nextInt();
            int denomenator = console.nextInt();
            System.out.print(wholenumber + "_" + numerator + "/" + denomenator);
        }
        else if(fraction.contains("/")) {
            int numerator = console.nextInt();
            int denomenator = console.nextInt();
            System.out.print(numerator + "/" + denomenator);

        } 
        else {                                                                          
            System.out.print(fraction);
        }

        }

我认为它最初工作,但后来我意识到,如果我输入1_1 / 2或1/2,代码将等待分子,分母和整数的输入。所以我的问题是我希望从最初输入的字符串声明前面提到的值,而不是从不同的输入声明。

我理解这可能会令人困惑,所以基本上 我输入1_1 / 2,我希望我的代码声明1为全数,1为分子,2为分母。我怎么做到这一点?

1 个答案:

答案 0 :(得分:0)

int[] numbers = Arrays.asList(fraction.split("_|/")).stream()
            .mapToInt(s -> Integer.parseInt(s))
            .toArray();

然后,如果条目属于1_1/2

  • wholenumber = numbers [0]
  • numerator = numbers [1]
  • denomenator = numbers [2]

如果条目属于1/2

  • numerator = numbers [0]
  • denomenator = numbers [1]