我尝试创建一个方法,询问用户他们想要的名称和值的数量,然后提示用户输入这些名称和值。然后它假设返回具有最低值的人的名字并在main中打印。错误不断弹出,它无法找到变量" name"。这是我目前的代码
public static void main(String[] args){
String name = minValue();
System.out.println(name);
}//end main
public static String minValue(){
Scanner input = new Scanner(System.in);
System.out.print("How many first names are there?");
int numOfNames = input.nextInt();
for(int number = 0; number < numOfNames; number++){
System.out.print("Enter name: ");
String name = input.next();
}
System.out.print("How many values are there?");
int numOfValues = input.nextInt();
for (int count = 0; count < numOfValues; count++){
System.out.print("Enter the value: ");
double value = input.nextDouble();
}
return name;
}//end minValue
我也相信我没有把这些值与名称联系起来。真的很困惑。
答案 0 :(得分:1)
请改用这段代码!它可以帮助您将值存储在数组中,并将代码写入所提供空间中的最小值!
Scanner input = new Scanner(System.in);
System.out.print("How many first names are there?");
int numOfNames = input.nextInt();
String name[]=new String[numOfNames];
for (int number = 0; number < numOfNames; number++) {
System.out.print("Enter name: ");
name[number] = input.next();
}
System.out.print("How many values are there?");
int numOfValues = input.nextInt();
double value[]=new double[numOfValues];
for (int count = 0; count < numOfValues; count++) {
System.out.print("Enter the value: ");
value[count] = input.nextDouble();
}
/* Write function to calculate min value here */
return min value;
答案 1 :(得分:0)
在方法minValue
中,您在第一个String name
循环中定义了for
变量,然后尝试在循环范围之外访问它。你应该这样做:
public static String minValue(){
...
String name = "";
for( ... ) {
name = input.next();
}
...
return name;
}
答案 2 :(得分:0)
错误一直弹出,它无法找到变量&#34; name&#34;。
将name
移出for
循环:
String name = null;
for (int number = 0; number < numOfNames; number++) {
System.out.print("Enter name: ");
name = input.next();
}
<强>解释强>
for
循环的大括号({
和}
)定义了定义变量的范围。由于您在该块中定义了name
,因此它只能在其中可用。通过将块外的声明移动到return name
的范围,它将可用于引用。
假设返回值最低的人的名字并在main中打印。
如果你想记住你读过的名字和值,你必须将它们全部放在一些数据结构中(数组,列表,地图等)。我假设您尝试使用最基本的结构,因此使用数组。此外,在您的情况下拥有不同数量的名称和值是没有意义的。尝试理解并完成此代码:
public static String minValue() {
Scanner input = new Scanner(System.in);
System.out.print("How many first names are there?");
int numOfNames = input.nextInt();
String[] names = new String[numOfNames];
double[] values = new double[numOfNames];
for (int number = 0; number < numOfNames; number++) {
System.out.print("Enter name: ");
names[number] = input.next();
System.out.print("Enter the value: ");
values[number] = input.nextDouble();
}
int i = 0;
// write a way to get the index i of the smallest value in values
return names[i];
}
答案 3 :(得分:0)
您在方法结束时正在执行return name
,但未在适当范围内的任何位置声明它。你已经在main
(这意味着它只在那个方法中可用)和for循环中定义了它(这意味着它是为每个循环迭代重新创建的,并且只在那里可用)。
您可以在String name = ""
方法的开头添加minValue
作为快速修复,但我建议您阅读变量范围,以便了解代码错误的原因。
答案 4 :(得分:0)
这应该给你返回名字。 你所做的是在for循环中定义名称。这意味着只要完成for循环运行,就会丢弃name变量。 定义要返回的变量或在循环外部的循环外使用(如方法的开头。 这应该可以为您返回名称。
public static void main(String[] args){
String name = minValue();
System.out.println(name);
}//end main
public static String minValue(){
String name="none";
Scanner input = new Scanner(System.in);
System.out.print("How many first names are there?");
int numOfNames = input.nextInt();
for(int number = 0; number < numOfNames; number++){
System.out.print("Enter name: ");
name = input.next();
}
System.out.print("How many values are there?");
int numOfValues = input.nextInt();
for (int count = 0; count < numOfValues; count++){
System.out.print("Enter the value: ");
double value = input.nextDouble();
}
return name;
}//end minValue
这段代码也完全没有双重值......
System.out.print("How many values are there?");
int numOfValues = input.nextInt();
for (int count = 0; count < numOfValues; count++){
System.out.print("Enter the value: ");
double value = input.nextDouble();
}