问题很简单,但无法弄清楚:
如何找回namesInput和categoryInput?
的线索public void create(){
Scanner scan = new Scanner(System.in);
System.out.println("Name:");
String nameInput = scan.next();
System.out.println("Category:");
String categoryInput = scan.next();
System.out.println(nameInput + " " + categoryInput);
}
public void addToList(){
names.add(nameInput);
categories.add(categoryInput);
}
答案 0 :(得分:0)
尝试使用这样的参数来避免编译错误:
public void create(){
Scanner scan = new Scanner(System.in);
System.out.println("Name:");
String nameInput = scan.next();
System.out.println("Category:");
String categoryInput = scan.next();
System.out.println(nameInput + " " + categoryInput);
}
public void addToList(int nameInput,int categoryInput){
names.add(nameInput);
categories.add(categoryInput);
}
并确保将此参数传递给此方法
答案 1 :(得分:0)
1)cannot find symbol: nameInput, categoryInput on the addToList method
:
这是因为您在create()中定义了 nameInput和categoryInput ...但是您在“addToList()中使用它们。
这里的问题是“scope”。
2)你有(至少)三种选择:
将变量作为参数传递
全局声明变量(作为静态成员)
消除“addToList()”,并将这两行作为“create()”的一部分执行。
3)我建议结合后两个选项:
public class MyClass {
private List<String> names;
private List<String> categories;
...
public MyClass () {
names = new ArrayList<String>();
categories = new ArrayList<String>();
...
public newItem () {
Scanner scan = new Scanner(System.in);
System.out.println("Name:");
String nameInput = scan.next();
System.out.println("Category:");
String categoryInput = scan.next();
names.add(nameInput);
categories.add(categoryInput);
System.out.println("newItem: " + nameInput + " " + categoryInput);
}
4)更进一步,定义一个 new 类可能是有意义的;具有“名称”和“类别”作为成员的类。
答案 2 :(得分:0)
您可以将它们移动到更高的范围(即将它们移到方法之外)。该变量只有在它所在的块结束时才可访问(即匹配的'}')
class Foo
{
String nameInput;
String categoryInput;
public void create(){
Scanner scan = new Scanner(System.in);
System.out.println("Name:");
nameInput = scan.next();
System.out.println("Category:");
categoryInput = scan.next();
System.out.println(nameInput + " " + categoryInput);
} //Variables like 'scan' can't be used past this brace
public void addToList(int nameInput,int categoryInput){
names.add(nameInput);
categories.add(categoryInput);
}
} //The two variables can't be used past here
答案 3 :(得分:-1)
import javax.swing.*;
import java.util.*;
public class clarify {
ArrayList<String> names = new ArrayList<String>();
ArrayList<String> categories = new ArrayList<String>();
public static void main (String[] args){
clarify clear = new clarify();
clear.create();
clear.addToList();
clear.displayLists();
}
public void create(){
Scanner scan = new Scanner(System.in);
System.out.println("Name:");
String nameInput = scan.next();
System.out.println("Category:");
String categoryInput = scan.next();
System.out.println(nameInput + " " + categoryInput);
}
public void addToList(){
names.add(nameInput);
categories.add(categoryInput);
}
public void displayLists(){
System.out.println(names.listIterator());
}
}