有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

控制台Java程序未运行

我用java编写了一个分解程序。我在eclipse中有一个包含2个包的项目。一个只有一个类,一个我有问题的类,而另一个包中没有任何内容。 当我点击run时,什么也没发生,我也不知道为什么

以下是java代码:

    package com.frostbytedev.factor;

import java.util.ArrayList;
import java.util.Scanner;

public class factor {
    static ArrayList<Integer> notFactors = new ArrayList<Integer>();
    static ArrayList<Integer> factors = new ArrayList<Integer>();
    static int i = 0;

    /**
     * @param args
     */
    public static void main(String[] args){
        // TODO Auto-generated method stub
            Initialize();
    }

    private static void Initialize() {
        // TODO Auto-generated method stub
        System.out.println("Enter a number to factor below:");
        Scanner in = new Scanner(System.in);
        int number = in.nextInt();
        FactorNumber(number);
        PrintList(Factors);
    }

    private static void PrintList(ArrayList<Integer> factorsToPrint) {
        // TODO Auto-generated method stub
        for(i=0;i<factorsToPrint.size()-1;i++){
            System.out.print(factorsToPrint.get(i)+", ");
        }
            System.out.print(factorsToPrint.size());

    }

    private static void FactorNumber(int number) {
        // TODO Auto-generated method stub
        for(i=2;i<number/2;i++){
            if(number%i==0){
                FactorNumber(i);
                FactorNumber(number/i);
            } else {
                notFactors.add(i);
            }
        }
        if(notFactors.size()==number){
            factors.add(number);
        }
    };

}

共 (2) 个答案

  1. # 1 楼答案

    右键单击项目资源管理器中的类文件,尝试运行类->;以…的身份运行->;Java应用程序

  2. # 2 楼答案

    代码中有以下错误 1) 由于i是静态的,所以代码中有一个无限循环。 2) 应设置系数,以避免重复 3) if(notFactors.size()==number/2-1)as循环以2开头。 4) 对于(int i=2;i<;=number/2;i++),它应该是<;=

    这不会打印1&;数字本身也是一个因素。如果你需要它们,你可以添加到集合中

    package com.frostbytedev.factor;
    
    import java.util.ArrayList;
    import java.util.HashSet;
    import java.util.Scanner;
    import java.util.Set;
    
    public class Test {
    static ArrayList<Integer> notFactors = new ArrayList<Integer>();
    static Set<Integer> factors = new HashSet<Integer>();
    
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Initialize();
    }
    
    private static void Initialize() {
        // TODO Auto-generated method stub
        System.out.println("Enter a number to factor below:");
        Scanner in = new Scanner(System.in);
        int number = Integer.parseInt(in.nextLine());
        in.close();
        FactorNumber(number);
        PrintList(factors);
    }
    
    static void PrintList(Set<Integer> factorsToPrint) {
        // TODO Auto-generated method stub
        for (int factor : factorsToPrint) {
            System.out.print(factor + ", ");
        }
        System.out.println(factorsToPrint.size());
    
    }
    
    private static void FactorNumber(int number) {
        // TODO Auto-generated method stub
        for (int i = 2; i <= number / 2; i++) {
            System.out.println(i);
            if (number % i == 0) {
                factors.add(i);
                FactorNumber(i);
                FactorNumber(number / i);
            } else {
                notFactors.add(i);
            }
        }
        if (notFactors.size() == number / 2 - 1) {
            factors.add(number);
        }
    };
    

    }