В чем проблема с этим кодом в Java? - PullRequest
0 голосов
/ 16 марта 2011

Я хочу сделать программу на Java в Eclipse, что скажите мне, могу ли я сделать треугольник или нет.Это мой код:

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 ]

8 голосов
/ 16 марта 2011

System.in.read() читает один byte из стандартного ввода вашего приложения. Это почти наверняка не то, что вы хотите (если что-то не передает двоичные данные в ваше приложение).

Вместо этого можно попробовать System.console().readLine() (за которым следует Integer.parseInt() для преобразования результирующего String в int).

5 голосов
/ 16 марта 2011

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

read (): читает следующий байт данных из входного потока.

Вы читаете не целое число, а код символа.

Вы, вероятно, должны сделать:

java.util.Scanner s = new java.util.Scanner(System.in); 
int k = s.nextInt();
2 голосов
/ 16 марта 2011

В дополнение к проблеме 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 голос
/ 16 марта 2011

Добавляя к ответу Иоахима, попробуйте это:

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

    }
}
1 голос
/ 16 марта 2011

Вы читаете байт, поэтому, если это ascii-charcter '5', это не число 5, а 53. Ваша следующая проблема - возврат каретки, который читается как следующий байт.

Вместо этого используйте класс java.util.Scanner:

Scanner sc = new Scanner (System.in);
int a = sc.nextInt ();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...