2011-03-16 35 views
0

我想在Eclipse中用Java編寫一個程序,告訴我,如果我可以製作三角形。這是我的代碼:Java中的這段代碼有什麼問題?

import java.io.IOException; 

public class haromszog { 
    public static void main(String[] args) throws IOException { 

     int a; 
     int b; 
     int c; 

    System.out.print("Please insert the 'a' side of the triangle:"); 
    a = System.in.read(); 

    System.out.print("Please insert the 'b' side of the triangle:"); 
    b = System.in.read(); 

    System.out.print("Please insert the 'c' side of the triangle:"); 
    c = System.in.read(); 

    if ((a+b)>c) 
    { 
     if ((a+c)>b) 
     { 
      if ((b+c)>a) 
      {System.out.print("You can make this triangle"); 
      } 
      else 
       System.out.print("You can't make this triangle"); 

     } 
    } 
    } 
} 

Eclipse的,可以運行它,但它寫道:

請插入三角形的 'A' 方:(比如我寫:)5

請插入三角形的 'b' 側:

請插入三角形的 'c' 的側:

你不能讓這個三角

我不能寫任何東西到B和C的一面。這有什麼問題?

+0

[與創建一個三角形的循環]的可能重複(HTTP:/ /stackoverflow.com/questions/11409621/creating-a-triangle-with-for-loops) – jww 2014-08-18 04:29:45

回答

8

System.in.read()從您的應用程序的標準輸入中讀取單個byte。這幾乎肯定是不是你想要的(除非有東西將二進制數據傳遞給你的應用程序)。

您可以嘗試使用System.console().readLine()(接着Integer.parseInt()將生成的String轉換爲int)。

+0

這很好,雖然我沒有寫出if表達式,但是當我編寫它們時編譯器告訴錯誤。但是,謝謝:) – Zwiebel 2011-03-16 16:41:05

5

http://download.oracle.com/javase/1.4.2/docs/api/java/io/InputStream.html

讀():讀取數據的從輸入流的下一個字節。

您讀取的不是整數,而是char代碼。

你或許應該這樣做:

java.util.Scanner s = new java.util.Scanner(System.in); 
int k = s.nextInt(); 
+0

可能不是掃描儀。他看起來正在處理命令行輸入。在這種情況下,我可能會在由新的BufferedReader(new InputStreamReader(System.in))創建的reader上使用readLine(),然後再使用Integer.parseInt()。 – 2011-03-16 16:25:48

+0

@Konstantin Komissarchik掃描儀有什麼問題?更少的代碼寫入:) – Andrey 2011-03-16 16:26:49

+0

如果掃描儀正確處理輸入之間的新線條,那麼它也可以使用。 – 2011-03-16 16:30:26

2

除了System.in.read()的問題,你需要結合你的if語句,因爲else子句目前僅適用於內一個。

if ((a+b)>c && (a+c)>b && (b+c)>a) { 
    System.out.print("You can make this triangle"); 
} 
else { 
    System.out.print("You can't make this triangle"); 
} 
1

你讀一個字節,所以如果它是ASCII碼字符內「5」是不是5號,但53你的下一個問題是回車被解讀爲下一個字節。

使用java.util.Scanner中的類,而不是:

Scanner sc = new Scanner (System.in); 
int a = sc.nextInt(); 
1

添加到勒夫的回答,試試這個:

import java.io.IOException; 
import java.util.Scanner; 

public class foo { 
    public static void main(String[] args) throws IOException { 

    Scanner s = new Scanner(System.in); 

    System.out.print("Please insert the 'a' side of the triangle:"); 
    int a = s.nextInt(); 

    System.out.print("Please insert the 'b' side of the triangle:"); 
    int b = s.nextInt(); 

    System.out.print("Please insert the 'c' side of the triangle:"); 
    int c = s.nextInt(); 

    } 
} 
+0

這對我來說是最好的答案,因爲它對初學者來說可能很簡單:)謝謝。 – Zwiebel 2011-03-16 16:42:26