获取字符串方法Java中的int变量

获取字符串方法Java中的int变量,java,methods,Java,Methods,这是家庭作业。我只是想把它放在那里。我觉得最好先展示我的代码,然后解释我要做什么 import java.util.Scanner; public class Question1 { public static void main(String[] args){ int length, odd, even, largest; int n = getNumber(); length=odd=even=largest=initialize(); String sequ

这是家庭作业。我只是想把它放在那里。我觉得最好先展示我的代码,然后解释我要做什么

import java.util.Scanner;
public class Question1 {
public static void main(String[] args){
    int length, odd, even, largest;
    int n = getNumber();
    length=odd=even=largest=initialize();
    String sequence=createSequence(n, largest, odd, even, length);
    displaySequence(sequence);
    displayStatistics(largest, length, odd, even);
}
private static int getNumber(){
   Scanner kb = new Scanner(System.in);
   System.out.println("Enter the value of the number: ");
   int number = kb.nextInt();
   return number;
}
private static int initialize(){
    return 0;
}
public static String createSequence(int n, int largest, int odd, int even, int length){
    String sequence="";
    sequence+=n+" ";
    while (n!=1){
        n = (n%2==0) ? n/2 : 3*n+1;
        System.out.print(", "+n);
        sequence+=n+" ";
        if(n%2==0){ even++;
        }else{ odd++;}
        if(n>=largest){ largest = n;
        }
        length++;
    }
    return sequence;
}
private static void displaySequence(String sequence){
    System.out.println(sequence);
}
public static String displayStatistics(int length, int even, int odd, int largest){
    String nil = "";
    System.out.println("The largest number in the sequence was "+largest);
    System.out.println("The length of the sequence was "+length);
    System.out.println("There were "+odd+" odd numbers");
    System.out.println("There were "+even+" even numbers");
    return nil;
}

}
我需要尝试显示序列中的最大数,序列的长度,序列中有多少偶数,序列中有多少奇数。但是,由于我无法在createSequence方法中返回int值,因此我无法为每个统计信息获取新值。阻止我显示上述统计数据。如何访问这些新变量以在最终方法中使用

注:

要求:

  • 在main中声明变量

  • 初始化()中的变量

  • createSequence(创建序列)

  • displaySequence(然后以单独的方法显示序列)

  • 最后显示统计数据,即长度、偶数、赔率、最大值(用它自己的方法),这是一个困扰我的问题


  • 尝试从我的基本代码中重新实现您的代码

    public class Question{
    
        public class NumberStats {
            int len;
            boolean isOdd;
        }
    
        private ArrayList<NumberStats> stats = new ArrayList<>();
        public static void main(String[] args){
            Question q = new Question();
            Scanner kb = new Scanner(System.in);
            String number = "";
            do {
                System.out.println("Enter a series of numbers or q to quit: ");
                number = kb.next();
                q.stats.add(q.parseNumber(number));
            } while (number.equals("q")==false);
    
            q.printSummary();
    
    
        }
    
        private void printSummary(){
            int oddCount = 0;
            int evenCount = 0;
            int longestNumber = 0;
    
            for (NumberStats s : stats){
                if (longestNumber<s.len){
                    longestNumber = s.len;
                }
                if (s.isOdd){
                    oddCount+=1;
                } else {
                    evenCount+=1;
                }
            }
            System.out.println(String.format("Longest number length was : %i, Odd Numbers: %i, Even Numbers: %i",longestNumber,oddCount,evenCount));
        }
        private NumberStats parseNumber(String number){
            NumberStats stats = new NumberStats();
            Integer lastNumber = Integer.parseInt(String.valueOf(number.charAt(number.length()));
            stats.isOdd = true;
            if (lastNumber%2==0){
                stats.isOdd = false;
            }
            stats.len = number.length();
            return stats;
    
        }
    }
    
    公开课问题{
    公共类编号状态{
    内伦;
    布尔isOdd;
    }
    private ArrayList stats=new ArrayList();
    公共静态void main(字符串[]args){
    问题q=新问题();
    扫描仪kb=新扫描仪(System.in);
    字符串编号=”;
    做{
    System.out.println(“输入一系列数字或q以退出:”);
    number=kb.next();
    q、 添加(q.parseNumber(number));
    }while(number.equals(“q”)==false);
    q、 打印摘要();
    }
    私人文件摘要(){
    int oddCount=0;
    int evenCount=0;
    int longestNumber=0;
    for(NumberStats:stats){
    
    if(longestNumber如果您创建了一个Sequence类,您的老师可能会印象更深刻。类属性将是stats(可以通过getter方法访问)。createSequence方法将成为构造函数。您可以实现一个toString方法来返回内容的字符串表示形式。

    您可以返回一个包含4个变量的数组,而不是返回字符串类型。要添加@LuaiGhunim的注释,该数组可以是一个包含5个字符串的数组,其中
    arr[0]
    是您的序列,
    arr[1]
    -
    arr[4]
    是您想要的4个整数值,但作为字符串,然后当您获取数组时,要从字符串中获取整数,请执行
    integer.parseInt(arr[1])
    等@DavyM方法非常有效。谢谢。