在这里使用哪种循环格式?

时间:2015-12-24 15:29:53

标签: loops for-loop

最近我接受了一次采访,要求我做出以下类型的输出:

$i($i=1)

现在我没有练习太多,但不知何故设法做到了这一点。 其中我使用2个变量$num($num=9)$i<5。 并使条件<?php $num=9; for($i=1;$i<5;$i++) { echo $num . "<br>". $i."<br>"; $num--; } ?> 增加1,直到达到5。

$i

这给出了我需要的输出。但是有另一种方法可以使用$j<?php for($i=1,$j=9; $j>=6; $i++,$j--){ echo($j."<br/>".$i."<br />"); } ?> 作为变量。所以我想知道哪一个更简单,更好。

public void signUp(View view) 
{
    EditText nameedit = (EditText) findViewById(R.id.name);
    EditText emailedit = (EditText) findViewById(R.id.emailid);
    EditText contactedit = (EditText) findViewById(R.id.contact);
    EditText collegeedit = (EditText) findViewById(R.id.college);
    CheckBox accommodationcheck = (CheckBox) findViewById(R.id.accommodation);
    CheckBox raftingcheck = (CheckBox) findViewById(R.id.rafting);
    Spinner spinner= (Spinner) findViewById(R.id.spinner);
    String acc = String.valueOf(accommodationcheck.isChecked());
    String raf = String.valueOf(raftingcheck.isChecked());
    String name = nameedit.getText().toString();
    String email = emailedit.getText().toString();
    String contact = contactedit.getText().toString();
    String college = collegeedit.getText().toString();
    String gender=spinner.getSelectedItem().toString();
    SharedPreferences sharedPreferences = getSharedPreferences("SIGNUP", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    if (name.isEmpty() || email.isEmpty() || contact.isEmpty() || college.isEmpty()) 
    {
        Toast.makeText(this, "Please fill all the required field", Toast.LENGTH_LONG).show();

    } 
    else
    {

        editor.putString("accomodation", acc);
        editor.putString("rafting", raf);
        editor.putString("name", name);
        editor.putString("email", email);
        editor.putString("contact", contact);
        editor.putString("college", college);
        editor.putString("gender", gender);
        editor.apply();
    }
}

4 个答案:

答案 0 :(得分:1)

对我来说这看起来更好

for ($i=1, $j=9; $i<5; $i++,$j--) {
  echo $j;
  echo "\n";
  echo $i;
  echo "\n";
}

答案 1 :(得分:1)

我认为最好运行一个从9递减的循环并使用变量来跟踪迭代次数:

$count = 0;

for ($i = 9; $i >= 6; $i--)
{
    $count++;
    echo $i."\n";
    echo $count."\n";
}

答案 2 :(得分:1)

更一般地说,这可以写成:

<?php
//Bounds
$upper = 9;
$lower = 1;

//Mid-point, use MOD 2 to add 1 for odd numbers
$mid = ( $upper + ( $upper % 2 ) ) / 2;


for( $i = $lower, $j = $upper; $i <= $mid && $j > $mid; $i++, $j-- )
{
    echo $j;
    echo "\n";
    echo $i;
    echo "\n";
}

在序列结束时有点模糊。您提供的序列完全忽略中心/枢轴编号(5),上面的代码对奇数范围的数字执行相同操作,但显示偶数范围。如果目标是始终忽略中心一个或两个(奇数或偶数),那么您可以在for循环中更改第二个中心条件:

for( $i = $lower, $j = $upper; $i < $mid && $i !== $j; $i++, $j-- )
{
    echo $j;
    echo "\n";
    echo $i;
    echo "\n";
}

答案 3 :(得分:1)

一个变量解决方案

for($i=1; $i<5; $i++) {
    echo 10 - $i . "<br>". $i."<br>";
}