Java 如何在另一个方法中使用一个方法的变量?
问题很简单,但不知道如何解决: 如何获取NameInput和categoryInput的值Java 如何在另一个方法中使用一个方法的变量?,java,Java,问题很简单,但不知道如何解决: 如何获取NameInput和categoryInput的值 public void create(){ Scanner scan = new Scanner(System.in); System.out.println("Name:"); String nameInput = scan.next(); System.out.println("Category:"); String c
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 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在addToList方法上找不到symbol:nameInput,categoryInput:
这是因为您在create中定义了nameInput和categoryInput。。。但你在addToList中使用了它们
这里的问题是
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进一步说,定义一个新类可能是有意义的;将名称和类别作为成员的类。您可以将它们移动到更高的范围,即将它们移动到方法之外。该变量只有在其位于匹配的“}”中的块结束时才可访问
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());
}
}
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
请阅读Java范围。是什么阻止您将这些值作为参数传递给addToList?或者,当您在某些全局数据结构中扫描这些值时,是什么阻止您存储这些值?编译器说:找不到符号,专注于addToList方法上的nameInput和categoryInput你在哪里调用addToList方法?你能发布代码在main方法中在哪里调用此方法来声明它们全局吗?我不应该在类型之前添加公共静态吗?当然这是最好的做法,但事实是我愿意知道如何从另一个方法获取变量,顺便说一句,我想我只是需要改变一下模式,嗯?我的意思是,与这个新方法相比,这种方法是不合适的。它不仅不能解决你帖子中的问题,甚至不能编译!是的,我知道,有人要完整的代码,顺便说一句,现在没事了,谢谢大家!