Java 找不到解析和userInput的符号错误
在编译了这段代码之后,我得到了这个错误,我无法理解它是什么。我猜这与我的代码没有userInput声明有关,但我不知道该放在哪里Java 找不到解析和userInput的符号错误,java,Java,在编译了这段代码之后,我得到了这个错误,我无法理解它是什么。我猜这与我的代码没有userInput声明有关,但我不知道该放在哪里 import java.util.Scanner; class MixNumberWithUnit_AM{ String unit; Mix_AM mixNumber; public MixNumberWithUnit_AM (String str) { String[] abc= parseUnit(st
import java.util.Scanner;
class MixNumberWithUnit_AM{
String unit;
Mix_AM mixNumber;
public MixNumberWithUnit_AM (String str) {
String[] abc= parseUnit(str);
mixNumber= new Mix_AM(abc[0]);
unit = abc[1];
}
public MixNumberWithUnit_AM(Mix_AM m, String u){
mixNumber = m;
unit =u;
MixNumberWithUnit_AM ft=null;
MixNumberWithUnit_AM in=null;
int ftpos =userInput.indexOf("ft");
int inpos = userInput.indexOf("in");
int appos = userInput.indexOf("'");
int quotepos = userInput.indexOf("\"");
if(ftpos !=-1 && inpos !=1){ // if both "feet" and "inches" exist
String ftString=userInput(0,ftpos+2);
String inString=userInput(ftpos+2);
ft= new MixNumberWithUnit_AM(ftString);
in= new MixNumberWithUnit_AM(inString);
}
else if(ftpos !=-1 && quotepos ==-1){ //if "feet" exist and quote doesn't exist
ft=new MixNumberWithUnit_AM("userInput");
in= new MixNumberWithUnit_AM("0in"); // intialize to zero inches
}
else if(inpos !=1 && appos==-1){ //if inches exist and apostrophe doesn't exist
ft=new MixNumberWithUnit_AM("0ft");
in=new MixNumberWithUnit_AM("userInput");
}
else if(appos !=-1 && quotepos !=-1){ //if apostrophe and quote exist
String ftString=userInput(0,ftpos+1);
String inString=userInput(ftpos+1);
ft= new MixNumberWithUnit_AM(ftString);
in= new MixNumberWithUnit_AM(inString);
}
else if (quotepos !=-1 && ftpos ==-1){ //if quote exists and feet doesn't exist
ft=new MixNumberWithUnit_AM("0ft");
in=new MixNumberWithUnit_AM("userInput");
}
else if (ftpos !=-1 && appos==-1){
ft=new MixNumberWithUnit_AM("userInput");
in= new MixNumberWithUnit_AM("0in");// intialize to zero inches
}
else if (ftpos ==-1 && appos !=-1){
ft=new MixNumberWithUnit_AM("0ft");
in=new MixNumberWithUnit_AM("userInput");
}
}
public static String[] parseUnit (String userInput){
String str= userInput.trim();
int len = str.length();
String s2=str.substring(len-2); //get the last 2 characters
String p1="",p2="";
if(s2.equals("in") || s2.equals("ft") ){
p1=str.substring(0,len-2).trim();
p2=s2;
}
else{
s2=str.substring(len-1); //get the last 2 characters
if (s2.equals("'") || s2.equals("\"") ){
p1=str.substring(0,len-1).trim();
p2= s2;
}
else{
p1=""; p2=""; System.out.println("error:input w/o units");}
}//outer if
String[] rtn={p1,p2};
return rtn;
}//parse
public String displayMix() {
String str=mixNumber.displayMix();
if(str.equals("0")){
str="";
}
else{
str= str+unit;
}
return str;
}//display
public static String get(){
Scanner scan = new Scanner (System.in);
String userInput = scan.nextLine();
userInput =userInput.trim();
return (userInput);
} //get
public static MixNumberWithUnit_AM add(MixNumberWithUnit_AM m1,MixNumberWithUnit_AM m2){
mix data = Mix_AM.add(m1.mixNumber,m2.mixNumber); // mix data "can be named different"
return( new MixNUmberWithUnit_AM(data,m1.unit));
}
public static void main(String[] args) {
System.out.println("Enter first measurement: ");
String userInput=get();
MixNumberWithUnit_AM m1= parseInput("userInput");
System.out.println(m1[0].display()+ m2[1].display());
System.out.println("Enter second measurement: ");
userInput = get();
MixNumberWithUnit_AM m2=parseInput(userInput);
System.out.println(m3[0].display()+m2[1].display());
MixNumberWithUnit_AM m3 = MixNumberWithUnit_AM.add(m1,m2);
System.out.println(m3[0].display()+m2[1].display());
}//main
}//class
UserInput
在get()
方法中定义。这意味着它在MixNumberWithUnit\u AM()方法中不可用
将变量声明为实例字段。读一读变量 将u
替换为userInput
或将mixnumberwhithunit\u AM
中的u
替换为。
我希望您看到get()
中的字符串被传递到mixnumberwhithunit\u AM
,并获取名称u
将您的userInput定义为全局变量,在您的
MixNumberWithUnit_AM.java:18: error: cannot find symbol
int ftpos =userInput.indexOf("ft");
^ symbol: variable userInput location:classMixNumberWithUnit_AM
您的get()和main方法,removeString
from userInput,应该是
String unit;
Mix_AM mixNumber;
及
但是为什么要使用字符串u和用户输入
userInput = scan.nextLine();
userInput=get();