Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将汇编算法转换为Java序列计算器_Java_Sequence_Calculator - Fatal编程技术网

将汇编算法转换为Java序列计算器

将汇编算法转换为Java序列计算器,java,sequence,calculator,Java,Sequence,Calculator,当我在java代码中输入“3”时,它会打印出来 3将乘以3和+1 值为10 关于如何修改它的任何建议,以便它正确计算序列 import javax.swing.*; public class sequences { /** * @param args */ public static void main(String[] args) { calculateSequences(); }//ends main p

当我在java代码中输入“3”时,它会打印出来

3将乘以3和+1 值为10

关于如何修改它的任何建议,以便它正确计算序列

    import javax.swing.*;
public class sequences {

    /**
     * @param args
     */
    public static void main(String[] args) {
            calculateSequences();
    }//ends main

    public static void calculateSequences()
        {
            int value;
            String valueInput = JOptionPane.showInputDialog("Value");
            value = Integer.parseInt(valueInput);

            if(value == 1)
            {
                System.out.println("Value is equal to 1, closing down");
                System.exit(0);

            }
            else if ((value%2)==0)
            {
            System.out.println(value + " will be divided by 2");
            value = value/2;
            System.out.println("Value is even " + value);

            }
            else
            {
                System.out.println(value + " will be multiplied by 3 and +1");
                value = 3*value+1;
                System.out.println("Value is " + value);

            }

        }//ends calculateSequences
}//ends class

您需要添加迭代或递归。因为这是Java,所以使用迭代是最有意义的

这与算法中的“开始”行相对应

为此,您可以使用
while
循环,例如
while(true)

您忘记了“转到开始”按钮

以下是一次测试的结果

23 will be multiplied by 3 and + 1
Value is 70
70 will be divided by 2
Value is even 35
35 will be multiplied by 3 and + 1
Value is 106
106 will be divided by 2
Value is even 53
53 will be multiplied by 3 and + 1
Value is 160
160 will be divided by 2
Value is even 80
80 will be divided by 2
Value is even 40
40 will be divided by 2
Value is even 20
20 will be divided by 2
Value is even 10
10 will be divided by 2
Value is even 5
5 will be multiplied by 3 and + 1
Value is 16
16 will be divided by 2
Value is even 8
8 will be divided by 2
Value is even 4
4 will be divided by 2
Value is even 2
2 will be divided by 2
Value is even 1
Value is equal to 1, closing down
这是添加了while子句的代码

import javax.swing.JOptionPane;

public class Sequences {

    /**
     * @param args
     */
    public static void main(String[] args) {
        calculateSequences();
    }// ends main

    public static void calculateSequences() {
        int value;
        String valueInput = JOptionPane.showInputDialog("Value");
        value = Integer.parseInt(valueInput);

        while (value > 0) {
            if (value == 1) {
                System.out.println("Value is equal to 1, closing down");
                System.exit(0);

            } else if ((value % 2) == 0) {
                System.out.println(value + " will be divided by 2");
                value = value / 2;
                System.out.println("Value is even " + value);

            } else {
                System.out.println(value + " will be multiplied by 3 and + 1");
                value = 3 * value + 1;
                System.out.println("Value is " + value);

            }
        }

    }// ends calculateSequences

}
以及输出:

3 will be multiplied by 3 and +1
Value is 10
10 will be divided by 2
Value is even 5
5 will be multiplied by 3 and +1
Value is 16
16 will be divided by 2
Value is even 8
8 will be divided by 2
Value is even 4
4 will be divided by 2
Value is even 2
2 will be divided by 2
Value is even 1
Value is equal to 1, closing down
3 will be multiplied by 3 and +1
Value is 10
10 will be divided by 2
Value is even 5
5 will be multiplied by 3 and +1
Value is 16
16 will be divided by 2
Value is even 8
8 will be divided by 2
Value is even 4
4 will be divided by 2
Value is even 2
2 will be divided by 2
Value is even 1
Value is equal to 1, closing down