为我的java类调用方法

时间:2015-05-11 08:15:53

标签: java methods call

我尝试创建一个方法,询问用户他们想要的名称和值的数量,然后提示用户输入这些名称和值。然后它假设返回具有最低值的人的名字并在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 

我也相信我没有把这些值与名称联系起来。真的很困惑。

5 个答案:

答案 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();
 }