我想在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方面写任何东西。这有什么问题?
答案 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();
}
}