2012-05-07 18 views
2

私はプログラミングが比較的新しいです。 私は今、プログラムを作ろうとしています。私は何かできることを見つけようとしています。私は...私はこれを行う方法を知らないとあなたたちは私を助けることができるすべての最初だから、Java - IF 'input' = 'this' {配列から変数に文字列を格納}

、願って、私は配列をしたとかでそれを満たしています

String[] pizza = new String[10]; 
    pizza[0] = "1- Cheese"; 
    pizza[1] = "2- Wedge"; 
    pizza[2] = "3- Bacon"; 
    pizza[3] = "4- Hawaiian"; 
    pizza[4] = "5- Vegetarian"; 
    pizza[5] = "6- Pepperoni"; 
    pizza[6] = "7- Ham"; 
    pizza[7] = "8- Apple"; 
    pizza[8] = "9- Grape"; 
    pizza[9] = "10- Italian"; 

I IF文(これはしばらくの間)があるようにしたいと思います。ここにコードを入れて、後で説明します。

で今
int pizzaCounter = 0; 

     while(pizzaCounter < 5) 
     { 

      Scanner pizzaPick = new Scanner(System.in); 
      int Pizzas = pizzaPick.nextInt(); 

      if (Pizzas == 1) 
      { 
       *Store "1- Cheese" (From pizza[0]) into a variable* 

       pizzaCounter++; 
      } 
      if (Pizzas == 2) 
      { 
       *Store "2- Wedge" (From pizza[0]) into a variable* 

       pizzaCounter++; 
      } 
      if (Pizzas == 3) etc... 

     } 

ビットを「ここで何かを挿入」、私はそれは私が後でプリントアウトすることができますいくつかの変数に配列(ピザ)からテキストを格納するようにそれを作るために試してみたいです...たとえば、ユーザーが '1'を入力すると、「1-Cheese」が取り出され、後で印刷できる変数に格納されます。

また、私はそれをきれいにして各変数の事を促す10のIF文ではないのですか?

これも可能かどうか分かりませんが、何か助けていただければ幸いです。 :可能な場合、私は実際に何が起こっているか理解できるように、D

私は理解できるが、私はここに求めています何を願って...

してください、あなたは、あなたがの各ステップで何をしているかを説明することができ、コードをコピーして貼り付けるのではなく、同じコードを後で使用することはできますか?私はちょっとしたことだと思うので、後でもっと使うことができれば分かると思います...ありがとうございました! :多くを保存し、それらを印刷し、あなたは5枚のピザまで注文することができ、本格的なプログラムのために

string saveName = ""; 
if ((Pizzas >= 0) && (Pizzas <= 9)) { 
    saveName = pizza[Pizzas];   // This is "insert something here". 
    pizzaCounter++; 
} 

// Here, saveName has the pizza name. 

:D

+1

:ここ

は、最終的なコードがどのように見えるかです。 –

+0

(トピック外)のJava命名規則に従う場合、変数は 'lowercaseStartingCamelCase'にする必要があります。あなたの変数が 'Pizzas'と呼ばれる代わりに' pizzas'と呼ばれています。 –

答えて

4

はあなたのような何かをif文のシリーズ全体を置き換えることができます終了時には、以下を参照してください:

import java.util.Scanner; 

public class testprog { 
    public static void main (String args[]) { 
     String[] pizzaList = {" 0 - End of order", 
      " 1 - Cheese", " 2 - Wedge", " 3 - Bacon", " 4 - Hawaiian", 
      " 5 - Vegetarian", " 6 - Pepperoni", " 7 - Ham", " 8 - Apple", 
      " 9 - Grape", "10 - Italian"}; 

     int[] orderList = new int[5]; // Ordered pizzas 
     int pizzaCount = 0;   // and count. 

     Scanner pizzaPick = new Scanner(System.in); 
     while (pizzaCount < 5) { 
      // Output the menu. 

      System.out.println ("Choose a pizza:"); 
      for (int i = 0; i < pizzaList.length; i++) 
       System.out.println (" " + pizzaList[i]); 

      // Get input, check, and add pizza. 

      int thisPizza = pizzaPick.nextInt(); 
      if (thisPizza == 0) break; 

      if ((thisPizza > 0) && (thisPizza < pizzaList.length)) 
       orderList[pizzaCount++] = thisPizza; 

      if ((thisPizza < 0) || (thisPizza >= pizzaList.length)) 
       System.out.println ("Invalid input of " + thisPizza); 
     } 

     // Output all pizzas. 

     for (int i = 0; i < pizzaCount; i++) 
      System.out.println ("Ordered: " + pizzaList[orderList[i]]); 
    } 
} 
+0

うわー!!!どうもありがとうございます!!!私は本当にこれを感謝します! :D:D:D どうもありがとう! 私はピザを選ぶ度にピザを選ぶごとに、どうやってそれを作るのですか?以下のようなもので:のSystem.out.println( "1-大、2-小) \t \t \t \t \t \t \t \t \t \tスキャナpizzaSize =新しいスキャナ(System.in); \t \t \t \t \t int型のサイズ= pizzaSize。nextInt(); \t \t \t \t \t \t \t \t \t \t場合(サイズ== 1) \t \t \t \t \t { \t \t \t \t \t \t価格=価格+ smallPrice。 \t \t \t \t \t} 他\t \t \t \t \t場合(サイズ== 2) \t \t \t \t \t { –

0
String[] PIZZA_LABELS = new String[]{ "1- Cheese", "2- Wedge" ... } 
String label; 
while(pizzaCounter < 5) 
{ 
     Scanner pizzaPick = new Scanner(System.in); 
     int Pizzas = pizzaPick.nextInt(); 
     label = PIZZA_LABELS[Pizzas - 1]; // 1-indexed vs 0-indexed 
     ... 
     System.out.println(label); 

を行っている '場合'。 (ラベル配列よりもきれいなデータ構造の場合は、java.util.Mapを参照することをお勧めします)。

+0

ALL_CAPSが静的final'定数 'のために確保されなければならない \t \t \t \t \t価格=価格+ largePrice 。 – delicateLatticeworkFever

+1

これは、とにかく静的な最終定数でなければなりません。 – ptyx

0

Javaのローカルプリミティブに大文字の単語(Pizzas)を使用しないでください。従来、これらはクラス名です。

Pizzasの値にかかわらず同じものを区別したいと思います。たとえば、毎回pizzaCounterを増やして、それをif/elsesから離します。あなたがする必要があるのは、ピザのタイプの名前を取得することだけで、次にケースのセットが必要ない場合のいくつかの例があります。後で使用するものを割り当てる必要があります。

ケースごとにいくつかのユニークなものがある場合は、switchを使用することができます。

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

ところで、あなたはこのような配列を初期化することができます

String eg[] = { 
    "one", 
    "two", 
    "three", 
}; 
0

いくつかの事はあなたがあります。コードを最適化するためにここで行うことができます。まず、forループの賛成でwhileループをドロップし、そのように:、しかし

switch (pizzaPick.nextInt()) { 
    case 0: 
     // Do something 
     break; 
    case 1: 
     // Do something else 
     break; 
    case 2: 
     // Etc. 
     break 
} 

for (int i = 0; i < 5; i++) { 
    // Will loop 5 times 
} 

第二に、あなたそうのようなswitch文と文、場合に置き換えることができます実際にはこれをさらに最適化することができ、switch文の必要性はまったくなくなります。まず、ピッキングされたピザを格納する変数が必要です。我々は5要素の長さの別の配列を使うことができます。次のように作成してください:

String[] pickedPizzas = new String[5]; 

これで、ピッキングされたピザを保存することができます。私たちは、その後、選んだピザを節約するために、各ループ内でこれを行うことができます:私たちはちょうど割り当てを使用することができますので、あなたが見ることができるように

pickedPizzas[i] = pizza[pizzaPick.nextInt()]; 

、私たちも、IFSまたはスイッチを使用する必要はありませんでした。配列のブラケット構文を使用して最適化を続けることができます。配列を次のように初期化することができます。

String[] strArray = {"one", "two", "three", ...}; 

これはスペースを節約し、簡単です。まず、スキャナの宣言をループ外に移動します。ループ内に配置すると、ループのスコープのために、ループが実行されるたびに再作成され、破棄されます。それをループの外に置くことでこれが改善されます。これはところで、非常に素晴らしい最初の質問です

// Hold all the pizza names 
String[] pizzas = { 
    "1- Cheese", 
    "2- Wedge", 
    "3- Bacon", 
    "4- Hawaiian", 
    "5- Vegetarian", 
    "6- Pepperoni", 
    "7- Ham", 
    "8- Apple", 
    "9- Grape", 
    "10- Italian" 
    }; 

// Create a variable to hold the selected pizzas 
String[] pickedPizzas = new String[5]; 

// Create Scanner outside loop 
Scanner scanner = new Scanner(System.in); 

// Loop to get picked pizzas 
for (int i = 0; i < 5; i++) { 
    // Save picked pizza, subtracting 1 since arrays start at 0 
    pickedPizzas[i] = pizzas[scanner.nextInt() - 1]; 
} 

// Do stuff with the users picked pizzas! 
+0

'String [] pizzas = new String [] {'は冗長ですが、 'String [] pizzas = {'を使うことができます。 – delicateLatticeworkFever

+0

@ goldold十分に公正です。かわった。 –

+0

ありがとう! :)私はそれを試みましたが、整数が選択された後で、何か他のものを追加する必要があることに気付きました。入力が1の場合、「標準または大サイズですか?」というメッセージが表示されます。/ –

関連する問題