2012-04-02 170 views
1

這是一項家庭作業。我必須編寫一個程序,輸出一個正好具有8個字符的文本(如果沒有足夠的空間,請添加空格,如果太多,請刪除字符),然後在「|」之間添加30個「#」字符線,取決於給定的值。值可以是int或double,int輸入範圍從0到30,雙倍從0.00到1.00。
30的整數或1.00的兩倍等於30個「#」字符。
15或兩個0.50的整數等於15個「#」字符。
輸入可以在一行或多行。if(scanner.nextInt){}被忽略(java)

例如
輸入
WS2009 15
輸出
WS2009 2空間 這裏 | ############### 15空格這裏 |

這是我迄今熟了起來:

http://pastebin.com/LCuASiuD

不必要println()和彎路與int1double1是測試的原因。

問題是,if和else if條件永遠不會被調用。我知道,因爲輸出「int」或「dubs」在我嘗試時不會出現。我究竟做錯了什麼?在string1 = scanner1.next();之後,下一個元素應該是整數或雙精度。是因爲空間嗎?

Scanner scanner1 = new Scanner(System.in); 
    String string1 = ""; 
    int int1 = 0; 
    double double1 = 0; 


    while(scanner1.hasNext()) 
    { 
     string1 = scanner1.next(); 
     System.out.println(string1); 

     if(scanner1.hasNextInt()) 
     { 
      int1 = scanner1.nextInt(); 
      System.out.println(drawBar(string1 , int1)); 
      System.out.println("int"); 
     } 
     else if(scanner1.hasNextDouble()) 
     { 
      double1 = scanner1.nextDouble(); 
      System.out.println(drawBar(string1 , double1)); 
      System.out.println("dubs"); 
     } 
    } 

回答

2

這實際上沒有什麼錯,就我們所見 - 它應該可以正常工作。基於這種懷疑,我從pastebin編譯你的源代碼並運行它,事實上,它的工作方式和預期的一樣。我感覺到一個真正的桌面碰撞情景即將出現。

+0

由於我沒有得到格式化,我做了一個我想要回答的截圖。 http://666kb.com/i/c2lsyi21l0tfp7wuu.png – user1308176 2012-04-02 14:36:29

+0

我剛發現它的工作原理是,如果這個值是一個整數,如果它是一個double,它就不起作用! – user1308176 2012-04-02 14:47:31

+0

問題解決: 小數位的德國分隔符是一個「,」和我的編輯器/ JDK或任何使用這個本地默認值,並期望一個「,」但這個輸入數字與一個「。」分隔。現在我得知如何解決這個問題。 我不能回答我自己的問題,因爲我是一個新用戶。 – user1308176 2012-04-02 14:58:56