Java Eclipse Android训练营-如何修改Ferry应用程序?

Java Eclipse Android训练营-如何修改Ferry应用程序?,java,android,eclipse,Java,Android,Eclipse,导师要求我们创建一个简单的应用程序,允许用户输入门票数量,并按18美元的固定费率计算这两个地点的成本。我们已被要求外包和研究,以完成应用程序的修改;所以去玛丽角的票要20美元,去星岛的票要30美元。我的代码如下 public class MainActivity extends Activity { double costPerTicket=18.00; int numberOfTickets; double totalCost;

导师要求我们创建一个简单的应用程序,允许用户输入门票数量,并按18美元的固定费率计算这两个地点的成本。我们已被要求外包和研究,以完成应用程序的修改;所以去玛丽角的票要20美元,去星岛的票要30美元。我的代码如下

 public class MainActivity extends Activity 
    {
        double costPerTicket=18.00;
        int numberOfTickets;
        double totalCost;
        String groupChoice;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            final EditText tickets=(EditText)findViewById(R.id.txtTickets);
            final Spinner group=(Spinner)findViewById(R.id.txtGroup);
            Button cost = (Button)findViewById(R.id.btnCost);
            cost.setOnClickListener(new OnClickListener()
            {
                final TextView result=((TextView)findViewById(R.id.txtResult));
                @Override
                public void onClick(View v)
                {
                    // TODO Auto-generated method stub
                    numberOfTickets=Integer.parseInt(tickets.getText().toString());
                    totalCost=costPerTicket * numberOfTickets;
                    DecimalFormat currency=new DecimalFormat("$###,###.##");
                    groupChoice=group.getSelectedItem().toString();
                    result.setText("Total cost for "+groupChoice +" is " +currency.format(totalCost));
                }
            });
        }

您可以为每个不同的票证创建
TicketType
对象。大概是这样的:

public class TicketType {    
    //single ticket price, depending on JAVA version, you could try making price final
    private double price;
    //Total spent
    private double moneySpent;
    public TicketType(double price) {
        this.price = price;
    }
    //buy tickets, returns how much it cost
    public double buy(int amount){
        double priceForAmount = amount*price;
        moneySpent+=priceForAmount;
        return priceForAmount;
    }
    //return how much money was spent during objects lifetime
    public double getMoneySpent(){
        if(moneySpent==0) ???;
        else
        return moneySpent;
    }
Spinner mySpinner = (Spinner)findViewById(R.id.YOUR_SPINNER_ID);
mySpinner.setAdapter(adapter);
简单地说:

//probably create some class variables:
public class MyActivity extends Activity {
    TicketType capeMarie = new TicketType(18.0);
    TicketType startIsland = new TicketType(30.0);
    //something to switch between selection
    RadioGroup selectedType;
...

onClick(View v){
        //parse number
        TicketType selectedTicketType = null;
        int id = selectedType.getCheckedRadioButtonId();
        switch(id){
            case CAPE_MARIE_ID:
                selectedTicketType =capeMarie;
            break;
            case ...:...break;
        }
        double price = selectedTicketType.buy(parsedNumber);
        //show price to user
}

首先在布局中声明一个微调器。。。声明微调器后,将转到位于values文件夹下的Strings.xml文件。。。就在这里,你添加了一个这样的数组

<string-array name="LocationArray">
    <item>Cape Marie</item>   
    <item>Star Island</item>
</string-array>
 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.LocationArray, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
public class MainActivity extends Activity 
{
    double costPerTicket=18.00;
    int numberOfTickets;
    double totalCost;
    String groupChoice;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText tickets=(EditText)findViewById(R.id.txtTickets);
        final Spinner group=(Spinner)findViewById(R.id.txtGroup);
        Button cost = (Button)findViewById(R.id.btnCost);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,  R.array.LocationArray, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        Spinner mySpinner = (Spinner)findViewById(R.id.YOUR_SPINNER_ID);
        mySpinner.setAdapter(adapter);
        cost.setOnClickListener(new OnClickListener()
        {
            final TextView result=((TextView)findViewById(R.id.txtResult));
            @Override
            public void onClick(View v)
            {
                String SpinnerValue = mySpinner.getSelectedItem().toString();
                if(SpinnerValue.equals("Cape Marie")){
                // TODO Auto-generated method stub
                   numberOfTickets=Integer.parseInt(tickets.getText().toString());
                   totalCost = 20 * numberOfTickets;
                   DecimalFormat currency=new DecimalFormat("$###,###.##");
                   groupChoice=group.getSelectedItem().toString();
                   result.setText("Total cost for "+groupChoice +" is " +currency.format(totalCost)); 
            }
             if(SpinnerValue.equals("Star Island")){
                // TODO Auto-generated method stub
                   numberOfTickets=Integer.parseInt(tickets.getText().toString());
                   totalCost = 30 * numberOfTickets;
                   DecimalFormat currency=new DecimalFormat("$###,###.##");
                   groupChoice=group.getSelectedItem().toString();
                   result.setText("Total cost for "+groupChoice +" is " +currency.format(totalCost)); 
            }

        });
    }
适配器代码如下所示

<string-array name="LocationArray">
    <item>Cape Marie</item>   
    <item>Star Island</item>
</string-array>
 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.LocationArray, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
public class MainActivity extends Activity 
{
    double costPerTicket=18.00;
    int numberOfTickets;
    double totalCost;
    String groupChoice;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText tickets=(EditText)findViewById(R.id.txtTickets);
        final Spinner group=(Spinner)findViewById(R.id.txtGroup);
        Button cost = (Button)findViewById(R.id.btnCost);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,  R.array.LocationArray, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        Spinner mySpinner = (Spinner)findViewById(R.id.YOUR_SPINNER_ID);
        mySpinner.setAdapter(adapter);
        cost.setOnClickListener(new OnClickListener()
        {
            final TextView result=((TextView)findViewById(R.id.txtResult));
            @Override
            public void onClick(View v)
            {
                String SpinnerValue = mySpinner.getSelectedItem().toString();
                if(SpinnerValue.equals("Cape Marie")){
                // TODO Auto-generated method stub
                   numberOfTickets=Integer.parseInt(tickets.getText().toString());
                   totalCost = 20 * numberOfTickets;
                   DecimalFormat currency=new DecimalFormat("$###,###.##");
                   groupChoice=group.getSelectedItem().toString();
                   result.setText("Total cost for "+groupChoice +" is " +currency.format(totalCost)); 
            }
             if(SpinnerValue.equals("Star Island")){
                // TODO Auto-generated method stub
                   numberOfTickets=Integer.parseInt(tickets.getText().toString());
                   totalCost = 30 * numberOfTickets;
                   DecimalFormat currency=new DecimalFormat("$###,###.##");
                   groupChoice=group.getSelectedItem().toString();
                   result.setText("Total cost for "+groupChoice +" is " +currency.format(totalCost)); 
            }

        });
    }
ArrayAdapter=ArrayAdapter.createFromResource(这个,R.array.LocationArray,android.R.layout.simple\u微调器\u项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
所以在你的代码中应该是这样的

<string-array name="LocationArray">
    <item>Cape Marie</item>   
    <item>Star Island</item>
</string-array>
 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.LocationArray, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
public class MainActivity extends Activity 
{
    double costPerTicket=18.00;
    int numberOfTickets;
    double totalCost;
    String groupChoice;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText tickets=(EditText)findViewById(R.id.txtTickets);
        final Spinner group=(Spinner)findViewById(R.id.txtGroup);
        Button cost = (Button)findViewById(R.id.btnCost);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,  R.array.LocationArray, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        Spinner mySpinner = (Spinner)findViewById(R.id.YOUR_SPINNER_ID);
        mySpinner.setAdapter(adapter);
        cost.setOnClickListener(new OnClickListener()
        {
            final TextView result=((TextView)findViewById(R.id.txtResult));
            @Override
            public void onClick(View v)
            {
                String SpinnerValue = mySpinner.getSelectedItem().toString();
                if(SpinnerValue.equals("Cape Marie")){
                // TODO Auto-generated method stub
                   numberOfTickets=Integer.parseInt(tickets.getText().toString());
                   totalCost = 20 * numberOfTickets;
                   DecimalFormat currency=new DecimalFormat("$###,###.##");
                   groupChoice=group.getSelectedItem().toString();
                   result.setText("Total cost for "+groupChoice +" is " +currency.format(totalCost)); 
            }
             if(SpinnerValue.equals("Star Island")){
                // TODO Auto-generated method stub
                   numberOfTickets=Integer.parseInt(tickets.getText().toString());
                   totalCost = 30 * numberOfTickets;
                   DecimalFormat currency=new DecimalFormat("$###,###.##");
                   groupChoice=group.getSelectedItem().toString();
                   result.setText("Total cost for "+groupChoice +" is " +currency.format(totalCost)); 
            }

        });
    }
公共类MainActivity扩展活动
{
双倍成本=18.00;
国际机票号码;
总成本加倍;
字符串组选择;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
最终EditText票证=(EditText)findViewById(R.id.txt票证);
最终微调器组=(微调器)findViewById(R.id.txtGroup);
按钮成本=(按钮)findViewById(R.id.btnCost);
ArrayAdapter=ArrayAdapter.createFromResource(这个,R.array.LocationArray,android.R.layout.simple\u微调器\u项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
微调器mySpinner=(微调器)findViewById(R.id.YOUR\u微调器\u id);
设置适配器(适配器);
cost.setOnClickListener(新的OnClickListener()
{
最终TextView结果=((TextView)findViewById(R.id.txtResult));
@凌驾
公共void onClick(视图v)
{
字符串SpinnerValue=mySpinner.getSelectedItem().toString();
if(SpinnerValue.equals(“Cape Marie”)){
//TODO自动生成的方法存根
numberOfTickets=Integer.parseInt(tickets.getText().toString());
总成本=20*张票;
DecimalFormat currency=新的DecimalFormat($######,####.#“);
groupChoice=group.getSelectedItem().toString();
result.setText(““+groupChoice+”的总成本为“+currency.format(totalCost));
}
if(SpinnerValue.equals(“星岛”)){
//TODO自动生成的方法存根
numberOfTickets=Integer.parseInt(tickets.getText().toString());
总成本=30*张票;
DecimalFormat currency=新的DecimalFormat($######,####.#“);
groupChoice=group.getSelectedItem().toString();
result.setText(““+groupChoice+”的总成本为“+currency.format(totalCost));
}
});
}

你的问题到底是什么?基本上,如果你的代码正常工作,你可以去CodeReview。我不知道我是否应该检查你的代码,因为那样我会给其他人树立一个坏榜样。代码和应用程序工作得很好,但是对于每个选定的汽车渡轮成本,它被设置为18美元,我们需要实施两个,而不是totalCost=18,我们需要进行调整这是一个非常清楚的问题,我们被要求研究和外包人员,网站能够做到这一点,这不是这个网站的目的,我打算在另一个问题上发布答案…请阅读它,如果需要更多的帮助,不要害怕问…谢谢你完美和理解,谢谢你的回答回答这个问题,花时间帮助我和世界各地的其他人进行编程,很有魅力;-)有没有另一种建议方式可以将你的知识和帮助落实到我的代码中,因为要求是一个旋转器,有两个位置:玛丽角和星岛;玛丽角等于每张票20美元,星岛30美元。用户en记下车票数量,从微调器中选择位置,按下按钮计算总成本?当我得到代表票时,我也会投票给你,因为你的答案也很好;-)哇,是像你这样的人让这个世界变得更美好;-)竖起大拇指,非常感谢,祝你有一个美好的一天。如果需要更多的帮助,很高兴能为你提供帮助别害怕问…干杯!!我已经实现了,做得很好,很好,我非常感谢你的帮助现在我明白我需要if声明,并有一个我们还没有被教过的ArrayAdapter…再次感谢你非常感谢。当我的代表上台时,我将添加VotesHaven来帮助@CaseyT先生任何进一步的帮助或g通过一些代码,请随意提问…干杯!!:D