【问题标题】:Java, transfer graph, output as * to every 100Java,传输图,输出为 * 到每 100
【发布时间】:2015-03-05 22:42:47
【问题描述】:
    import java.util.Scanner;

公共类 BatmanBarGraph { public static void main(String[] args){

//store the amount of each transfer
 // storage for the variable
 int transfer1;
 int transfer2;
 int transfer3;
 int transfer4;
 int transfer5;

 //greet and ask for the transfers
 System.out.println("Good Morning Lucius. Enter Transfers - ");
 Scanner keyboard = new Scanner(System.in);

 //plug in the transfer
 System.out.println("Transfer 1");

 //keyboard 
 transfer1 = keyboard.nextInt();

 System.out.println("Transfer 2");
 transfer2 = keyboard.nextInt();

 System.out.println("Transfer 3");
 transfer3 = keyboard.nextInt();

 System.out.println("Transfer 4");
 transfer4 = keyboard.nextInt();

 System.out.println("Transfer 5");
 transfer5 = keyboard.nextInt();



//print a graph, line by line of each transfer
//Every asterisk (“*”) in each bar represents $100. A transfer of $1000 would then have five stars: *****


 //Create another chart for suspicious transactions
 System.out.println("Suspicious transfer chart: ");
 //divides the number we entered by 100
 int Suspicious1 = (transfer1)/100;
 int Suspicious2 = (transfer2)/100;
 int Suspicious3 = (transfer3)/100;
 int Suspicious4 = (transfer4)/100;
 int Suspicious5 = (transfer5)/100;

 System.out.print("Transfer 1:");
 for (int N1 = Suspicious1; N1 > 0; N1--){
     System.out.print("*");
     }

 System.out.print("Transfer 2: ");
 for (int N2 = Suspicious2; N2 > 0; N2--){
     System.out.print("*");
 }
 System.out.print("Transfer 3: ");
 for (int N3 = Suspicious3; N3 > 0; N3--){
     System.out.print("*");
 }

 System.out.print("Transfer 4: ");
 for (int N4 = Suspicious4; N4 > 0; N4--){
     System.out.print("*");
 }

 System.out.print("Transfer 5: ");

 for (int N5 = Suspicious5; N5 > 0; N5--){
     System.out.print("*");
 }
}

}

这是我的代码,我得到的输出是

    Suspicious transfer chart: 

转会1:*转会2:**转会3:***转会4:****转会5:*****

我如何让它们像这样

【问题讨论】:

  • 有点困惑。如果每个星号代表 100 美元,那么 1000 美元不是十颗星吗?
  • 旁注,是时候学习数组和循环了。
  • 是的,你说得对,1000 美元 = 十 *
  • 我的输出(可疑转移图表)的事情是,当它出来时,星号打印在“转移X”之前
  • @DaniilKim 完成打印星号后,您需要打印一个新行。另外,我建议使用一种常用的重用代码的方法,例如打印出星号。

标签: java int


【解决方案1】:

出于教育目的,此代码实现了代码的明显意图。

import java.util.Scanner;

public class BatmanBarGraph {
    public static void main(String[] args)
    {
        System.out.println("Good Morning Lucius. Enter Transfers - ");
        Scanner keyboard = new Scanner(System.in);
        int[] transfers = new int[5];
        for (int i = 0; i < transfers.length; i++) {
            System.out.print("Transfer " + (i + 1) + ": ");
            transfers[i] = keyboard.nextInt();
        }
        System.out.println();
        System.out.println("Suspicious transfer chart:");
        for (int i = 0; i < transfers.length; i++) {
            System.out.print("Transfer " + (i + 1) + ": ");
            for (int n = transfers[i] / 100; n > 0; n--) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

请注意,在打印“Transfer X: ****”输出时,它使用的是System.out.print 而不是println;这将每次传输的所有信息都保存在同一行上。然后在循环结束时执行System.out.println 以移动到下一次传输。

另一个主要区别显然是它使用了一个带有for循环的5元素数组来存储五个转账金额,而不是将每个金额存储在自己的变量中。

这个修改后的代码的输出是(包括我输入的传输值):

Transfer 1: 600
Transfer 2: 1000
Transfer 3: 830
Transfer 4: 420
Transfer 5: 1200

Suspicious transfer chart:
Transfer 1: ******
Transfer 2: **********
Transfer 3: ********
Transfer 4: ****
Transfer 5: ************

为了向您展示没有数组的情况,以下是两次传输的相同代码复制和粘贴:

import java.util.Scanner;

public class BatmanBarGraph
{
    public static void main(String[] args)
    {
        System.out.println("Good Morning Lucius. Enter Transfers - ");
        Scanner keyboard = new Scanner(System.in);

        System.out.print("Transfer 1: ");
        int transfer1 = keyboard.nextInt();
        System.out.print("Transfer 2: ");
        int transfer2 = keyboard.nextInt();

        System.out.println();
        System.out.println("Suspicious transfer chart:");

        System.out.print("Transfer 1: ");
        for (int n = transfer1 / 100; n > 0; n--) {
            System.out.print("*");
        }
        System.out.println();

        System.out.print("Transfer 2: ");
        for (int n = transfer2 / 100; n > 0; n--) {
            System.out.print("*");
        }
        System.out.println();

    }
}

【讨论】:

  • 听着,这是一个非常漂亮的代码,但我的重点是使用简单的代码。有没有办法让它在代码中没有数组?
  • 我在上面编辑了我的代码,我得到的输出是 Suspicious transfer chart: Transfer 1:*Transfer 2: **Transfer 3: ***Transfer 4: ****Transfer 5: * **** 我如何让它高于对方? (中断和下一行不起作用)
  • 我更新了我的答案,为您提供了两个转移的示例。当然,您可以弄清楚如何复制和粘贴其他三个传输的代码。
  • 好作品,我自己也搞定了!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
相关资源
最近更新 更多