这段代码在Java中有什么问题?

时间:2011-03-16 16:17:13

标签: java eclipse

我想在Eclipse中用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方面写任何东西。这有什么问题?

5 个答案:

答案 0 :(得分:8)

System.in.read()从应用程序的标准输入中读取单个byte。那几乎可以肯定 不是你想要的(除非有什么东西将二进制数据传递给你的应用程序)。

您可以尝试System.console().readLine()代替Integer.parseInt(),然后将结果String转换为int

答案 1 :(得分:5)

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

  

read():从输入流中读取下一个数据字节。

您读的不是整数,而是char代码。

您应该这样做:

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

答案 2 :(得分: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");
}

答案 3 :(得分:1)

你读了一个字节,所以如果它是ascii-charcter'5'它不是数字5,而是53.你的下一个问题是Carriage-Return,它被读作下一个字节。

改为使用java.util.Scanner类:

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

答案 4 :(得分:1)

添加Joachim的答案,试试这个:

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();

    }
}