2016-10-28 16 views
0

ループのみを使用できます。私は配列を使用することができません。ユーザーの入力に基づいて棒グラフを動的に生成する必要があります

私の出力は次のようになります。

How many stores are there?: 5 

Enter the total sales for Store 1: 1000 
Enter the total sales for Store 2: 1200 
Enter the total sales for Store 3: 1800 
Enter the total sales for Store 4: 800 
Enter the total sales for Store 5: 1900 

GRAPH OF TOTAL SALES 
(Each * = $100) 
Store 1: ********** 
Store 2: ************ 
Store 3: ****************** 
Store 4: ******** 
Store 5: ******************* 

しかし、私が得た:ここ

GRAPH OF TOTAL SALES 
(Each * = $100) 
Store 1 : ******************** 
Store 2 : ******************** 
Store 3 : ******************** 
Store 4 : ******************** 
Store 5 : ******************** 

が私のコードです:

私のコードで私は間違っ
Scanner input = new Scanner (System.in); 
System.out.println("How many stores are there?: "); 
int stores = input.nextInt(); 
int s = 0; 
for(int i = 0; i < stores; i++){ 
    System.out.println("Enter the total sales for Store " + (i + 1) + " : "); 
    s = input.nextInt(); 
} 

System.out.println("GRAPH OF TOTAL SALES"); 
System.out.println("(Each * = $100)"); 

for(int i1 = 0; i1 < stores; i1++) { 
    System.out.print("Store " + (i1 + 1) + " : "); 

    for(int t = 0; t <= s/100; t++) { 
     System.out.print("*"); 
    } 
    System.out.println(); 
} 

ありがとうございます!

+0

内側ループの 's'は常に同じ値です – janos

+0

ストアとは何ですか?コード全体を渡すことはできますか? –

+0

は私のユーザー入力値です – soniya

答えて

0

あなたはおそらくちょうど店が整数の配列である場合

t < stores[i1] 

とするために、内部で

t < s/100 

条件を変更する必要があります。また、stores.lengthの代わりに入れることを忘れてしまいましたが、最初に全体のコードを確認する必要があります。これがあなたを助けてくれることを願って!

EDIT:

あなたのコードに問題があなたはsの値は、ユーザーの入力を求めるたびに上書きしておくことです。解決策は、配列やデータ構造を使用できない場合、forループの入力を要求し、すべての繰り返しの最後に結果を出力することです。あなたが動的に拡張することができArrayListのか、いくつかのコレクションに、ユーザーから取得

Scanner input = new Scanner (System.in); 
System.out.println("How many stores are there?: "); 
int stores = input.nextInt(); 
int s = 0; 
System.out.println("GRAPH OF TOTAL SALES"); System.out.println("(Each * = $100)"); 

for(int i1 = 0; i1 < stores; i1++) { 
    System.out.println("Enter the total sales for Store " + (i1 + 1) + " : "); 
    System.out.print("Store " + (i1 + 1) + " : "); 
    s = input.nextInt(); 
    for(int t = 0; t < s/100; t++) { 
     System.out.print("*"); 
    } 
    System.out.println(); 
} 
input.close(); 
+0

配列を使用できません。私はループを使用する必要があります – soniya

+0

私はこの形式で出力したい場合は?何店舗ありますか?:5 ストア1の総売上を入力:1200 ストア3の総売上高を入力します。:1800 ストア4の総売上を入力:800 ストアの総売上を入力千 ストア2の総売上高は入力********** ストア2:************ ストア3 5:総売上 (各* = $ 100) ストア1 OF 1900 GRAPH: ***************** ストア4:******** ストア5:**************** *** – soniya

+0

次に、何らかの並べ替えや配列のデータ構造が必要です:) – Nano

0

ストアすべての値:

あなたのコードは次のようになります。ユーザーからの入力を読み終えたら、入力のコレクションを繰り返し処理し、グラフを印刷するときには各値がsの値になります。これは、入力のコレクションの反復ループ内のグラフを印刷するコードを作成することを意味します。現在、未知数の入力を追跡するための単一変数があり、最後に入力された値は常にsのために使用されます。その後、1つだけの文字列変数には、ユーザー入力を受け取るたびに、その結​​果バー表現を追加あなたは配列を使用することができない場合は、

Scanner input = new Scanner (System.in); 
System.out.println("How many stores are there?: "); 
int stores = input.nextInt(); 
ArrayList<Integer> s = new ArrayList<>(); 
for(int i = 0; i < stores; i++){ 
    System.out.println("Enter the total sales for Store " + (i + 1) + " : "); 
    s.add(input.nextInt()); 
} 
System.out.println("GRAPH OF TOTAL SALES"); System.out.println("(Each * = $100)"); 

    for(int i1 = 0; i1 < s.size(); i1++) { 
      System.out.print("Store " + (i1 + 1) + " : "); 

     for(int t = 0; t <= s.get(i1)/100; t++) { 
      System.out.print("*"); 
    } 
    System.out.println(); 
} 
0

:このような何かを行います。最後に、ユーザー入力を受け付けたら、その単一の文字列を表示するだけです。

関連する問題