2017-10-15 44 views
0

當我以前提出一個問題時,由於我不是很具體,所以得到了許多下降的提示。我會盡力使這一次變得清晰。我已經閱讀過類似標題的問題,但沒有人向我說清楚。從字符串輸入中聲明一個變量(Java)

基本上,我已經被分配爲我的AP comp sci類製作一個分數計算器。此作業的第一個檢查點是爲了能夠讀取用戶輸入的分數,而不會導致代碼崩潰。例如,「1_1/2」,「1/2」或僅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作爲wholenumber,1作爲分子,2作爲分母。我將如何實現這一目標?

+0

[查找字符串的所有號碼](// stackoverflow.com/q/13440506) – Tom

+0

@湯姆你這是什麼意思? – Brady

+0

定義掃描輸入數據的模式。 –

回答

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

然後,
如果條目是1_1/2類型:

  • wholenumber =號碼[0]
  • 分子=號碼[1]
  • denomenator =號碼[2]

如果條目類型爲1/2

  • 分子=號碼[0]
  • denomenator =號碼[1]
+0

修復它,謝謝! – Brady

+0

嘿,你可以接受答案,如果問題是固定的人 –

+0

對不起,還是新來的。我剛纔認爲 – Brady