2013-10-25 203 views
0

当我想使用扫描仪读取用户的名称,然后在字符串中调用名称的值,然后调用getName方法并给它一个打印输出名称的参数我的名字是......,我的代码只是崩溃和不工作我试图找出这个问题,但我不能使用扫描仪读取

public void getName(String name) 
    { 
     String s = "your name is: "+name ; 
    } 
    public void userInput() 
    { 
     print(); 
     Scanner s = new Scanner(System.in); 
     String read = s.nextLine(); 
     String op = read; 
     while(!read.equals("Exit")) 
     { 
      switch (op){ 
       case "a" : 
       System.out.println("type your name:"); 
       read = s.nextLine(); 
       getName(read); 
       print(); 
       read = s.nextLine(); 
       op = read; 
       break; 
       case"b" : 
       System.out.println("by"); 
       print(); 
       read = s.nextLine(); 
       op = read; 
       break; 
      } 

     } 
    } 

    public void print() 
    { 
     System.out.println("press a"); 
     System.out.println("press b"); 
    } 
+0

它在哪里崩溃?它给了什么错误? – cjc343

+0

代码不会'只是崩溃'。你得到什么样的错误? – nhgrif

+0

当我调用方法userInput()它工作正常,当我键入一个它会问我写我的名字,但之后它发送字符串名称的方法getName它进入一个循环,它不会突然出现 –

回答

1

为了让您同时条件为假,在开关添加一个default声明:

while (!read.equals("Exit")) { 
     switch (op) { 
     case "a": 
      System.out.println("type your name:"); 
      read = s.nextLine(); 
      getName(read); 
      print(); 
      read = s.nextLine(); 
      op = read; 
      break; 
     case "b": 
      System.out.println("by"); 
      print(); 
      read = s.nextLine(); 
      op = read; 
      break; 
     default: // Add this to finish loop when you type "Exit" 
      read = s.nextLine(); 
     } 

    } 

编辑

您调用方法getName(read)无效,请尝试以下操作之一:

1.您可以让getName()返回一个字符串并将其存储在您的userInput()以便稍后使用它。顺便说一句,getSomething()方法通常用于返回一些东西。

public static String getName(String name) { 
    String s = "Your name is: " + name; 
    return s; 
} 

而这userInput()方法:

String name = getName(read); 

2.或打印的东西在void getName(String name)方法:

System.out.println("Your name is: " + name); 

而在userInput()方法调用getName(read)

getName(read); 
+0

感谢它的工作 –

0

您的代码不会做任何有用的getName。我的猜测是,你要打印的名字,如:

public void getName(String name) // should rename this method 'printName' 
{ 
    System.out.println("your name is: "+name); 
} 
+0

在第一种情况下调用getName方法时,它不会打印出名称,这就是我要求的 –

+0

在这种情况下,我希望我的示例代码帮你。 – ljgw