【问题标题】:Get int variables within a String method Java在 String 方法 Java 中获取 int 变量
【发布时间】:2017-11-18 01:45:07
【问题描述】:

这是作业。只是要把它放在那里。我觉得最好先展示我的代码并解释我正在尝试做什么

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 值,因此无法获取每个统计信息的新值。阻止我显示上述统计数据。我将如何访问这些新变量以在最终方法中使用?

注意:

要求:

  1. 在 main 中声明变量

  2. 在 Initialize() 中初始化变量

  3. createSequence(创建序列)

  4. displaySequence(然后在单独的方法中显示序列)

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

【问题讨论】:

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

标签: java methods


【解决方案1】:

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

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;

    }
}

【讨论】:

    【解决方案2】:

    如果您创建了一个 Sequence 课程,您的老师可能会印象深刻。类属性将是统计信息(可以通过 getter 方法访问)。 createSequence 方法将成为构造函数。您可以实现一个 toString 方法来返回内容的字符串表示形式。

    【讨论】:

      猜你喜欢
      • 2016-04-15
      • 1970-01-01
      • 2017-08-25
      • 1970-01-01
      • 2013-10-16
      • 2011-01-21
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      相关资源
      最近更新 更多