2013-02-06 33 views
0

我有這個任務應該檢查三角形是等腰三角形,斜角,等邊,直角。將字符串轉換爲Java中的10位整數

我只需要使用小於或等於2,147,483,647(或2^31-1換句話說)的整數。我有義務使用Linux及其終端輸入值並獲得結果。

當我輸入1到9位數的整數時,輸出沒有問題,但是如果我想用10位數的整數(如2^31-1)進行測試,那麼我得到的結果是不恰當的......

這裏是我的代碼片段:

public static void main (String[] args) 
{ 
    int a,b,c; 
    a = Integer.parseInt(args[0]); 
    b = Integer.parseInt(args[1]); 
    c = Integer.parseInt(args[2]); 
} 

可能有人建議我如何處理這個問題?

+4

什麼是你的輸入和輸出? –

+1

你想過很久嗎?如果輸入> 2^31,打印錯誤信息? – Kent

+0

我認爲long是繼續前進的方式,只是爲了避免整數溢出 –

回答

0

我不知道..但我試着運行你的代碼,用BASH + JAVA,我沒有看到任何輸出問題。

下面是截圖。

enter image description here


現在好解決的,如果一些三角形實際上是一個等邊三角形,或不等邊三角形或等腰三角形或直角三角形的真正問題(這必須在一個情感水平寄存器)。

要解決的一個問題,記下所涉及的問題的功能邏輯

  1. 正三角形: - 一個三角形爲其中,所有三個側相等
  2. 等腰三角形: - 一種用於該三角形,兩個三面都是平等的
  3. 不等邊三角形 - 三角形爲此,沒有邊相等

現在想的約束

  1. 您只能使用整數
  2. 輸入待寫入的程序作爲參數發送

現在,因爲你做分析

public class BufferProblem{ 
    public static void main(String[] args){ 
    int a, b, c; 
    a = Integer.parseInt(args[0]); 
    b = Integer.parseInt(args[1]); 
    c = Integer.parseInt(args[2]); 

    if ((a == b) && (b == c)) { System.out.println("It is an equilateral triangle"); } 
    else if (a == b || b == c || c == a) { System.out.println("It is an isosceles triangle"); } 
    else if ((a != b) && (b != c) && (c != a)) { System.out.println("It is a scalene triangle");} 

    } 
} 
+0

我已經在我的代碼中實現了類似的檢查。順便說一句,我必須使用Linux及其終端。好的,是不是有一種方法可以將限制放在我的程序之上,就像在C中一樣define <輸入的最大整數> = 2^31-1。如果是這樣,如何在Java中做到這一點(我是一個新手)? – Warditive