保存Java变量



我正在从事分配工作,并且由于这个问题而无法执行功能。

在程序的开始时,我创建了一个变量

int initial = Keyboard.nextInt() (obviously user input)

然后该程序进入一个循环,其中"初始"的值多次更改。但是,在程序结束时,当我们退出循环时,我需要使用新的"初始"值以及用户最初输入的确切值。

我很难找到该程序来找到初始值,因为在我尝试调用"初始"变量时退出循环后,我只会得到更改的数字,而不是用户输入的第一个。感谢我如何解决这个问题,感谢。

public class Question3 {
    public static void main(String[] args) {

                 //declare scanner 
                Scanner keyboard = new Scanner (System.in);

                //initial amount
                System.out.println("Enter the initial amount: ");
                int initial = keyboard.nextInt();
                int numItems = 0;
                double assets = 0;
                int originalPrice=initial; 
                double spending = originalPrice-assets;

                if(initial<=10)
                {
                    System.out.println("Please save money and come back later!!");
                    numItems=1;
                    spending=0.0;
                }
                else 
                    while (initial > 10 )
                {   
                    System.out.println("Do you want to make purchases (Y/N)? ");
                    char c = keyboard.next().charAt(0);
                if (c == 'Y')
                    {
                        System.out.println("Please enter the price of the item = ");
                    }
                else 
                {
                        System.out.println("Lack of desire of Mr.Toto");
                        break;
                }
                int price = keyboard.nextInt();
                if (initial-price>=10)
                    {
                        System.out.println("A purchase is accepted");
                        initial-=price;
                        assets=initial-price;
                        numItems++;
                    }
                else
                    {
                        System.out.println("Insufficient assets!!");
                        System.out.println("Please enter the price of the item = ");
                    }
                if(numItems==10)
                {
                    System.out.println("Maximal number of purchases reached");
                    break;
                }

                }
                //displaying the summary of mr totos purchases 
                System.out.println("-------------------------------------------");
                System.out.println("Here is a summary of Mr.Toto's purchases.");
                System.out.println("-------------------------------------------");
                System.out.println("Number of items     Assets      Spending");
                System.out.println("    "+numItems+"                "+assets+"   " +"       "+spending);
                }
    }

有多个错误。

  • 您仅处理int值,因此删除了doubles
  • initialBalance应该是不可变的,因此设置为final
  • spending变量应已初始化为0
package com.stackoverflow.q42588622;
import java.util.Scanner;
@SuppressWarnings("javadoc")
public class Answer {
    public static void main(String[] args) {
        // get in the habit of cleaning up resources
        try (Scanner keyboard = new Scanner(System.in)) {
            // initial amount
            System.out.println("Enter the initial amount: ");
            final int initialBalance = keyboard.nextInt();
            int numItems = 0;
            // Same concept as balance
            // Only dealing with ints 
            // double assets = 0.0;
            int balance = initialBalance;
            // Spending is initially 0.
            // Only dealing with ints
            // double spending = originalPrice - assets;
            int spending = 0;
            if (initialBalance <= 10) {
                System.out.println("Please save money and come back later!!");
                numItems = 1;
                spending = 0;
            } else {
                while (balance > 10) {
                    System.out.println("Do you want to make purchases (Y/N)? ");
                    char c = keyboard.next()
                        .charAt(0);
                    if (c == 'Y' || c == 'y') {
                        System.out.println("Please enter the price of the item = ");
                    }
                    else {
                        System.out.println("Lack of desire of Mr.Toto");
                        break;
                    }
                    int price = keyboard.nextInt();
                    if (balance - price >= 10) {
                        System.out.println("A purchase is accepted");
                        balance -= price;
                        spending += price;
                        // Removing as initialBalance is immutable
                        // assets = initial - price;
                        numItems++;
                    }
                    else {
                        System.out.println("Insufficient assets!!");
                        System.out.println("Please enter the price of the item = ");
                    }
                    if (numItems == 10) {
                        System.out.println("Maximal number of purchases reached");
                        break;
                    }
                }
            }
            // displaying the summary of mr totos purchases
            System.out.println("-------------------------------------------");
            System.out.println("Here is a summary of Mr.Toto's purchases.");
            System.out.println("-------------------------------------------");
            System.out.println("Number of items     Assets      Spending");
            System.out.println("    " + numItems + "                " + balance + "   " + "       " + spending);
        }
    }
}

我认为您应该尝试使用arraylist。例如:

//Inside loop
ArrayList<Integer> stuff = new ArrayList<>();
price = Keyboard.nextInt();
stuff.add(price);
//Outside loop; gets first input
stuff.get(0);

最新更新