Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2014, 22:22   #1
Thom
 
Регистрация: 25.11.2012
Сообщений: 4
По умолчанию Проблема с программой (цикл пропускает ввод поля)

Здравствуйте, написал небольшую программу в которой вручную вводятся данные о сотрудниках, а затем выводятся на экран.
Проблема в том, что первое поле вводится только 1 раз, т.е. только для 1го сотрудника, затем для следующих сотрудников компилятор его пропускает и предоставляет ввод только 2го и 3го полей. Кто знает в чем причина?

Вот пример:
Enter Name thom
Enter Character okay
Enter Salary 100000
Enter Name Enter Character ok
Enter Salary 200000
Enter Name Enter Character ok

Код программы:

PHP код:
import java.util.*;

public class 
EmployeeTest {
    public static 
void main(String[] arg){
        
            
Scanner in = new Scanner(System.in);
            
        
Employee[] staff = new Employee[4];
        
                
        for (
int i 0<= 3i++)                             
                {
                
System.out.print("Enter Name ");
                
String f in.nextLine();
                
System.out.print("Enter Character ");
                
String g in.nextLine();
                
System.out.print("Enter Salary ");
                
double e in.nextDouble();
                
staff[i] = new Employee(fge);
                }
        
        for (
Employee i staff)
            
System.out.println("Name " i.getName() + ", Charakter " +
        
i.getCharacter() + ", Salary " +i.getSalary());
                                

}}

class 
Employee{
    public 
Employee(String nString cdouble s)
    {
        
name n;
        
character c;
                
salary s;
    }
    
    public 
String getName()
    {
        return 
name;
    }
    
    public 
String getCharacter()
    {
        return 
character;    
    }
    
    public 
double getSalary()
    {
        return 
salary;
    }
    
    private 
String name;
        private 
String character;
    private 
double salary;
    
    } 
Thom вне форума Ответить с цитированием
Старый 22.01.2014, 14:31   #2
Sibulba
 
Регистрация: 16.10.2012
Сообщений: 8
По умолчанию

условие задачи строгое? иммею ввиду испольовать массив вместо коллекции и т/п. или просто нужно сделать рабочий вариант?
Sibulba вне форума Ответить с цитированием
Старый 22.01.2014, 15:24   #3
Thom
 
Регистрация: 25.11.2012
Сообщений: 4
По умолчанию

Условия задачи как такового нет, просто учусь программировать Интересует почему в данном случае цикл пропускает ввод поля, каких то ошибок в коде не вижу, реализовать по другому могу и сам.
Thom вне форума Ответить с цитированием
Старый 22.01.2014, 21:45   #4
Sibulba
 
Регистрация: 16.10.2012
Сообщений: 8
Восклицание

class Employee

PHP код:
package main;

public class 
Employee {
    private 
String name;
    private 
String character;
    private 
double salary;

    public 
Employee(String name) {
    }

    public 
Employee(String nameString characterdouble salary) {
        
this.name name;
        
this.character character;
        
this.salary salary;
    }

    public 
String getName() {
        return 
name;
    }

    public 
void setName(String name) {
        
this.name name;
    }

    public 
String getCharacter() {
        return 
character;
    }

    public 
void setCharacter(String character) {
        
this.character character;
    }

    public 
double getSalary() {
        return 
salary;
    }

    public 
void setSalary(double salary) {
        
this.salary salary;
    }

    @
Override
    
public boolean equals(Object o) {
        if (
this == o) return true;
        if (
== null || getClass() != o.getClass()) return false;

        
Employee employee = (Employeeo;

        if (
Double.compare(employee.salarysalary) != 0) return false;
        if (!
character.equals(employee.character)) return false;
        if (!
name.equals(employee.name)) return false;

        return 
true;
    }

    @
Override
    
public int hashCode() {
        
int result;
        
long temp;
        
result name.hashCode();
        
result 31 result character.hashCode();
        
temp Double.doubleToLongBits(salary);
        
result 31 result + (int) (temp ^ (temp >>> 32));
        return 
result;
    }

class EmployeeManager

PHP код:
package main;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class 
EmployeeManager {
    public static 
void main(String[] argsthrows IOException {
        
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        
ArrayList<Employeeempl = new ArrayList<Employee>();

        for (
int i 04i++){
            
System.out.print("Enter name: ");
            
String name reader.readLine();
            
System.out.print("Enter character: ");
            
String character reader.readLine();
            
System.out.print("Enter salary");
            
double salary Double.parseDouble(reader.readLine());
            
empl.add(new Employee(namecharactersalary));
        }

        for (
Employee e empl){
            
System.out.println("Name: " e.getName() + " Character: " +e.getCharacter() + " Salary: " e.getSalary());
        }

    }

Вместо цикла в котором происходит ввод данных лучше замутить небольшую меню на "CASE"
Sibulba вне форума Ответить с цитированием
Старый 05.02.2014, 15:44   #5
denqxotl
Новичок
Джуниор
 
Регистрация: 05.02.2014
Сообщений: 2
По умолчанию

Вместо nextLine используй next
denqxotl вне форума Ответить с цитированием
Старый 27.02.2014, 18:56   #6
Thom
 
Регистрация: 25.11.2012
Сообщений: 4
По умолчанию

Большое спасибо за помощь, действительно использование метода next решает эту проблему. Насчет коллекций также спасибо, только сейчас начал их изучать, правда решение несколько усложняется
Thom вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
java, массив, цикл и ввод с клавиатуры. Mcduff Помощь студентам 4 06.11.2012 18:15
Проблема с Паскалем пропускает ввод Veor12 Паскаль, Turbo Pascal, PascalABC.NET 3 22.10.2011 11:46
Цикл For c TsCheckBox пропускает значения 0 2 3 ... ArtGrek Общие вопросы Delphi 7 30.01.2011 12:43
Ввод десятичных дробей в поля textbox формы NikolayGVB Microsoft Office Word 9 26.04.2009 04:55
Ввод данных в поля на страничке Port 111 Работа с сетью в Delphi 7 12.01.2009 20:34