2014-11-22 20 views
-1

Я начинающий программист, и я пробую программу для своего отца.Мой код не работает

import java.util.*; 
import java.lang.*; 
import java.io.*; 
class Employee 
{ 

    String m1,m2,m3,m4,m5,m6,m7; 
    void main() 
    { 
     Scanner w=new Scanner(System.in); 
     Scanner n=new Scanner(System.in); 
     System.out.println("Please enter your name "); 
     String name=w.nextLine(); 
     System.out.println("Please choose your client"); 
     System.out.println("1 - XXXXXX"); 
     int client=n.nextInt(); 
     m1=name;//Storing name 
     if(client==1)//If statement storing client 
     { 
       m2="XXXXXX"; 
    } 
    else 
    { 
     System.out.println("You have entered a wrong choice"); 
     return; 
    } 

    String msg=m1+"\t"+m2; 
    System.out.println(msg); 
} 

} 

Этот код даст выход «как вы ввели неправильный выбор '» Он подскакивает к elsse заявления. Какая ошибка и есть ли более простой способ запустить эту программу. Спасибо Может лет, пожалуйста, сообщите мне о моей ошибке, как

+3

Почему вы используете 2 'Scanner's? Кроме того, если ваш метод 'main' должен быть точкой входа для программы, то подпись является неправильной. – fabian

+1

Вам нужно посмотреть документы java для: a) форматирования/отступов, b) как писать и квалифицировать метод 'main()', c) как вводить ввод с классом «Scanner» (вам не нужны два). – ujvl

ответ

1

Ok попробуйте этот код:

import java.util.Scanner; 

public class Try 
{ 

    static String m1,m2,m3,m4,m5,m6,m7; 
    public static void main(String[] args) 
    { 
     Scanner w=new Scanner(System.in); 

     System.out.println("Please enter your name "); 
     String name=w.nextLine(); 
     System.out.println("Please choose your client"); 
     System.out.println("1 - XXXXXX"); 
     int client=w.nextInt(); 
     m1=name;//Storing name 
     if(client==1)//If statement storing client 
     { 
       m2="XXXXXX"; 
    } 
    else 
    { 
     System.out.println("You have entered a wrong choice"); 
     return; 
    } 

    String msg=m1+"\t"+m2; 
    System.out.println(msg); 
} 

} 
1

Вы пропустили вас основной метод подписи. В Java существует спецификация основного метода. Ваш главный метод должен быть как

public static void main(String []args){ 
} 

В вашем случае основного метод должен быть

public static void main(String args[]) { 
    String m1, m2, m3, m4, m5, m6, m7; 
    Scanner w = new Scanner(System.in); 
    Scanner n = new Scanner(System.in); 
    System.out.println("Please enter your name "); 
    String name = w.nextLine(); 
    System.out.println("Please choose your client"); 
    System.out.println("1 - XXXXXX"); 
    int client = n.nextInt(); 
    m1 = name;//Storing name 
    if (client == 1)//If statement storing client 
    { 
     m2 = "XXXXXX"; 
    } else { 
     System.out.println("You have entered a wrong choice"); 
     return; 
    } 

    String msg = m1 + "\t" + m2; 
    System.out.println(msg); 
} 
0

Вашей проблемы являются 2 сканеров. Поскольку сканер работает с итератором, который удерживает позицию внутри данного входного потока (в этом случае), когда вы создаете экземпляр двух сканеров, они оба устанавливают свой итератор в том же положении в поток, затем вы используете «w.nextLine(); », и первый сканер продвигается через поток, возвращающий первую строку, как вы пожелаете, но второй сканер, который вы не использовали, все еще находится в начале потока, поэтому в основном, когда вы используете n. nextInt() ;, сканер пытается проанализировать ваше имя как int, и странно, что он не выбрасывает исключение InputMismatchException, как и должно («https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextInt%28%29»). Исправьте свой код как @Sarthak Mittal, и он должен работать.

PS: имейте в виду, отступы, это важно, на самом деле

0

Первое:

void main() 

Там нет такого понятия в Java. Должно быть,

Чтобы знать значения public, static, String[] args прочитать: Explanation of 'String args[]' and static in 'public static void main(String[] args)'

Во-вторых,

int client = n.nextInt(); 

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

В-третьих,

Избавиться от дополнительного сканера. Вам нужен только один.

Остальная часть вашего кода в порядке.

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