Java 更改for循环中全局变量的值

Java 更改for循环中全局变量的值,java,Java,我正在为一个学校作业创建一个小程序,在这个程序中,人们可以输入他们的跑步历史(跑步英里数、经过的时间)并查看他们潜在的10公里配速和马拉松配速时间。显示步幅后,将显示不同步幅的表格 我有一个全局变量(pace),大多数计算都使用该变量运行,它需要在for循环中更改,但不会为计算更新 编辑:我知道这个程序写得很差,有很多东西可以浓缩。但是,它可以工作,并且将满足分配的参数。在for循环中,变量“pace”需要随着循环的每次迭代增加30 public class MarathonTime { pu

我正在为一个学校作业创建一个小程序,在这个程序中,人们可以输入他们的跑步历史(跑步英里数、经过的时间)并查看他们潜在的10公里配速和马拉松配速时间。显示步幅后,将显示不同步幅的表格

我有一个全局变量(pace),大多数计算都使用该变量运行,它需要在for循环中更改,但不会为计算更新

编辑:我知道这个程序写得很差,有很多东西可以浓缩。但是,它可以工作,并且将满足分配的参数。在for循环中,变量“pace”需要随着循环的每次迭代增加30

public class MarathonTime {

public static void main(String[] args) {

    String name;
    double distance;
    int hours, minutes, seconds;
    double pace;

    @SuppressWarnings("resource")
    Scanner scanner = new Scanner(System.in);

    System.out.print("What is your first name? ");
    name = scanner.next();
    System.out.print("How many miles did you run today? ");
    distance = scanner.nextDouble();
    System.out.print("How long did it take? Hours: ");
    hours = scanner.nextInt();
    System.out.print("Minutes: ");
    minutes = scanner.nextInt();
    System.out.print("Seconds: ");
    seconds = scanner.nextInt();

    pace = ((hours * 3600) + (minutes * 60) + seconds) / distance;
    double marathonPace = pace * 26.2;
    double tenKPace = pace * 6.2;

    int paceMinutes, paceSeconds;
    paceMinutes = (int) pace / 60;
    paceSeconds = (int) pace % 60;

    int marathonHours, marathonMinutes, marathonSeconds;
    marathonHours = (int) marathonPace / 3600;
    marathonMinutes = (int) (marathonPace % 3600) / 60;
    marathonSeconds = (int) marathonPace % 60;

    int tenKMinutes, tenKSeconds;
    tenKMinutes = (int) tenKPace / 60;
    tenKSeconds = (int) tenKPace % 60;

    System.out.println("Hello " + name);
    System.out.print("Your pace is "); timeFormatPace(paceMinutes, paceSeconds);
    System.out.println();
    System.out.print("At this rate your marathon time would be ");  timeFormatMarathon(marathonHours, marathonMinutes, marathonSeconds); 
    System.out.println();
    System.out.print("and your 10K time would be "); timeFormat10K(tenKMinutes, tenKSeconds);
    System.out.println();
    System.out.println("Good luck with your training!");
    System.out.println();

     for(int i = 1; i <= 10; i++){
            if(i == 1) {
                System.out.println("Pace \t\t 10K Time \t\t Marathon Time");
                i++;
            }
            if(i == 2) {
                System.out.println("------------------------------------------------------");
                i++;
            }
            // input the tablePaces into the calcs and print them as the format
            pace = (281 + (i*30));

            if (i >= 3 && i <= 10) {

            timeFormatPace(paceMinutes, paceSeconds); System.out.print("\t\t "); timeFormat10K(tenKMinutes, tenKSeconds); System.out.print("\t\t\t ");
            timeFormatMarathon(marathonHours, marathonMinutes, marathonSeconds);
            System.out.println();
            }
     }  
}
公共级马拉松时间{
公共静态void main(字符串[]args){
字符串名;
双倍距离;
整小时,分,秒;
双步速;
@抑制警告(“资源”)
扫描仪=新的扫描仪(System.in);
System.out.print(“您的名字是什么?”);
name=scanner.next();
System.out.print(“你今天跑了多少英里?”);
距离=扫描器.nextDouble();
系统输出打印(“花了多长时间?小时:”);
小时=scanner.nextInt();
系统输出打印(“分钟:”);
分钟=scanner.nextInt();
系统输出打印(“秒:”;
秒=scanner.nextInt();
速度=((小时*3600)+(分钟*60)+秒)/距离;
双程马拉松赛=配速*26.2;
双tenKPace=配速*6.2;
int paceMinutes,pacesonds;
步速分钟=(整数)步速/60;
步速秒数=(整数)步速%60;
国际马拉松小时、马拉松分钟、马拉松秒;
马拉松小时=(国际)马拉松比赛/3600;
马拉松分钟=(整数)(马拉松比赛成绩%3600)/60;
马拉松秒=(国际)马拉松比赛成绩%60;
整数十分钟,十秒钟;
十分钟=(整数)十分钟空间/60;
tenKSeconds=(int)tenKPace%60;
System.out.println(“Hello”+name);
System.out.print(“您的配速为”);TimeFormatPage(配速分钟、配速秒);
System.out.println();
System.out.print(“按此速率,您的马拉松时间将是”);timeFormatMarathon(马拉松小时、马拉松分钟、马拉松秒);
System.out.println();
System.out.print(“您的10K时间将是”);timeFormat10K(十分钟,十秒钟);
System.out.println();
System.out.println(“祝你训练顺利!”);
System.out.println();

对于(inti=1;i=3&&i我认为这就是您试图做的(非常简洁):

publicstaticvoidmain(字符串[]args){
int pace=100;//或初始化为任意值
对于(int i=0;i<10;i++){
//做点什么
pace=pace+30;//或等效地,pace+=30
}
}
将来,试着把你的问题简化成一个简单的问题。这样做的过程通常会帮助你自己解决问题,但至少会让别人很容易解决问题


另外,如果你知道你的程序写得不好,那就把它修好!写得好、简洁、模块化的程序更容易推理。凌乱、复杂的代码是很困难的。你花在调试上的时间会少一些,你也会得到更好的分数。

你可以在循环中使用
temp
变量来进行计算de>pace
不是任何合理定义的全局变量。我看不出有任何问题。
pace
也是
main()
方法中声明的局部变量。
public static void main(String[] args) {
    int pace = 100; // or initialise to whatever

    for(int i = 0; i < 10; i++) {
        // do something

        pace = pace + 30; // or equivalently, pace += 30
    }
}