2014-01-06 2 views
1

Я пытаюсь сохранить кучу переменных через буферизатор. Я новичок в Java и откровенно не совсем понимаю, что он делает, но я знаю, что он принимает вход от пользователя и пытается заставить его хранить кучу переменных для меня. Вот код:Ввод Java не принимается readline

// import required packages for the program, importing all classes from packages to be on the safe side 
import java.io.*; 
import java.util.*; 
import java.text.*; 

public class Example 
{ 
// need to use throws IO Exception because we are dealing with input and output, simple main method will not suffice 
public static void main(String[] args) throws IOException 
{ 
    // declare department names as strings 
    String department1; 
    String department2; 
    String department3; 
    String department4; 

    // declare number of employees in each department as ints 
    int employees1; 
    int employees2; 
    int employees3; 
    int employees4; 

    // declare cost per employee in each department as doubles 
    double cpe1; 
    double cpe2; 
    double cpe3; 
    double cpe4; 

    //declare sales in each department as doubles 
    double sales1; 
    double sales2; 
    double sales3; 
    double sales4; 

    // declare in as a BufferedReader- used to gain input from the user 
    BufferedReader in; 
    in = new BufferedReader(new InputStreamReader(System.in)); 

    //get input from the user to define department names 
    System.out.println("What is the name of department 1?"); 
    department1 = in.readLine(); 
    System.out.println("What is the name of department 2?"); 
    department2 = in.readLine(); 
    System.out.println("What is the name of department 3?"); 
    department3 = in.readLine(); 
    System.out.println("What is the name of department 4?"); 
    department4 = in.readLine(); 
    System.out.println("\n"); 

    //get input fromm the user to define number of employees 
    System.out.println("How many employees are in department 1?"); 
    employees1 = in.readLine(); 
    System.out.println("How many employees are in department 2?"); 
    employees2 = in.readLine(); 
    System.out.println("How many employees are in department 3?"); 
    employees3 = in.readLine(); 
    System.out.println("How many employees are in department 4?"); 
    employees4 = in.readLine(); 
    System.out.printlin("\n"); 

    // get input from user to define cost per employee in each department 
    System.out.println("What is the cost per employee in department 1?"); 
    cpe1 = in.readLine(); 
    System.out.println("What is the cost per employee in department 2?"); 
    cpe2 = in.readLine(); 
    System.out.println("What is the cost per employee in department 3?"); 
    cpe3 = in.readLine(); 
    System.out.println("What is the cost per employee in department 4?"); 
    cpe4 = in.readLine(); 

    // get input from user to define sales in each department 
    System.out.println("What are the sales in department 1?"); 
    sales1 = in.readLine(); 
    System.out.println("What are the sales in department 2?"); 
    sales2 = in.readLine(); 
    System.out.println("What are the sales in department 3?"); 
    sales3 = in.readLine(); 
    System.out.println("What are the sales in department 4?"); 
    sales4 = in.readLine(); 

Я получаю ошибку о том, что несовместимые типы происходит, когда я пытаюсь запустить программу. Опять же, очень новый для этого, поэтому любые простые объяснения были бы очень оценены. Спасибо!

+0

Можете ли вы добавить подробную трассировку стека и ввод, который вы используете? –

+0

Спасибо, что задали хороший вопрос. Я не знаю достаточно о Java, чтобы помочь вам, но мы ценим, что вы задали реальный вопрос, а не только тему типа «дайте мне-тез-код». +1 – OneChillDude

+1

Я предлагаю вам использовать 'java.util.Scanner', он имеет несколько полезных методов (например,' nextDouble() '). –

ответ

3

readLine способ возвращает String. Этот код даже не компилируется. Если вы хотите получить int значение, вам необходимо позвонить, например Integer.parseInt(ln), где ln - это строка, которую вы читаете на входе. Аналогично, если вы хотите получить значение double, вам необходимо позвонить, например, Double.parseDouble(ln), , где ln - это строка, которую вы читаете со входа.

+0

Спасибо за это. Но чтобы получить ввод, чтобы превратить число в целое число, сначала они не объявляются как строки, так что readLine может получить вход в первую очередь? – Zack

+1

@ Zack Нет, вы можете просто сделать это на лету, как это: employees1 = Integer.parseInt (in.readLine()); где employee1 объявляется как int. –

0

in.readLine() дает строку - не автоматически конвертируется в int или double. Рассмотрим Integer.parseInt(string).

0

Метод readLine() возвращает строку. Вы пытаетесь сохранить эту строку в int и double variables. Существуют методы в классах-оболочках (например, Integer и Double) для преобразования из строки в число.

Возможно, вы также можете использовать класс сканера.

1

Взгляните на Scanner Class Это должно сделать много чего вам нужно. Он позволяет читать входы как целые числа/строки/парные разряды без необходимости ручного преобразования

2

Вопрос относится к типу; у вас есть несколько разных типов данных, но вы читаете только строки. Я бы использовал java.util.Scanner так:

java.util.Scanner in = new java.util.Scanner(System.in); 
System.out.println("What is the name of department 1?"); 
if (in.hasNextLine()) { 
    department1 = in.nextLine(); 
} 
// ... 
System.out.println("How many employees are in department 1?"); 
if (in.hasNextInt()) { 
    employees1 = in.nextInt(); 
} 
// ... 
System.out.println("What is the cost per employee in department 1?"); 
if (in.hasNextDouble()) { 
    cpe1 = in.nextDouble(); 
} 
+0

правдиво это кажется более продвинутым, чем то, что я узнал до сих пор в своем курсе. Я просто пытаюсь понять суть ввода/вывода на данный момент. Можно ли добиться того, что я пытаюсь сделать, объявив все переменные в виде строк, а затем выполнив что-то вроде: i = Integer.valueOf (s) .intValue(); ? – Zack

+1

@ Zack прочитал peter.petrov, он объяснил, как исправить ваш код без использования сканера или чего-то подобного. –

Смежные вопросы