【问题标题】:For loop integer AND string variable?对于循环整数和字符串变量?
【发布时间】:2013-12-30 13:05:38
【问题描述】:

谁能告诉我如何将 x 和 y 的值更改为 '*' 和 '.'?使变量字符串没有帮助,因为我需要 N 是一个整数,因为它是用户输入,并且会在循环中发生冲突。

import java.util.Scanner;

public class nvalue
{
public static void main(String[] args)
{
    int x, y, N;
    Scanner keyboard = new Scanner(System.in);
    System.out.print("Enter Value of N : ");
    N = keyboard.nextInt();

    for(x=2; x<=N; x++)
    {
        for(y=1; y<=5; y++)
        {
         System.out.println(y +" * "+ x + " = " + (x*y));
        }
        System.out.println("----------------------");
    }
}
}

基本上我需要它来输出这个:

* * * * * * 
. * * * * *
. . * * * *
. . . * * *
. . . . * *
. . . . . *

【问题讨论】:

  • 到 * 和 .依据什么标准?

标签: java string variables for-loop integer


【解决方案1】:

你可以这样做:

for (int i = 0; i < N; ++i) {
  for (int j = 0; j < i; ++j) {
     System.out.print(".");
  }

  for (int j = i; j < N; ++j) {
     System.out.print("*");
  }

  System.out.println(); // Next line
}

请注意使用print 而不是println 进行不换行的打印。

【讨论】:

  • 您甚至可以将第二个 for 循环更改为 for (; j &lt; N; ++j) {,因为在该循环开始时,j已经等于N。跨度>
  • @Widdershins 不正确,j 仅在 for 块中可见
  • 这很简单,只需将第一个 for 块替换为 int j = 0; for (; j &lt; i; ++j) {。这仍然是一种非常快速和干净的方式。
  • 我确信这一切的影响都非常微不足道,每绘制一行将节省大约 1 个 cpu 周期,但它仍然更加优雅。在我的书中,如果你能让它任何更快而不让它看起来更糟,那么没有理由不这样做。
【解决方案2】:
for(x=0; x<N; x++){
    String ln = "";
    for(y=0; y<5; y++){
       ln += (y < x) ? "* " : ". ";
    }
    System.out.println(ln);
}

【讨论】:

  • 它是三元比较运算符 - 本质上是一种将 if 放入一个语句的方法。
  • 现在我明白了。它不像看起来那么复杂,哈哈。如果 y
【解决方案3】:
for(x=1; x<=N; x++)
{
    for(y=1; y<=5; y++)
    {
      if (y >= x) {
         System.out.print(" * ");
      } else {
         System.out.print(" . ");
      }
    }
    System.out.println();
}

【讨论】:

    【解决方案4】:
    public static void main(String[] args) {
        int x, y, N;
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Enter Value of N : ");
        N = keyboard.nextInt();
    
        for(x=0; x<N; x++)
        {
            for(y=0; y<N; y++)
            {
                if (y >= x)    {
                    System.out.print(" * ");
                }
                else {
                    System.out.print(" . ");
                }
            }
            System.out.println();
        }
    
    }
    

    【讨论】:

      【解决方案5】:

      你可以试试这个。

      for(int x=0; x<N; x++){
        for(int y=0; y<N;y++){
         if(y<x){
            System.out.print(".");
          }else{
            System.out.print("*");
          }
         }
         System.out.println();
      }
      

      该死,有人在我上面发布了相同的答案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-10
        • 1970-01-01
        • 2010-12-12
        • 1970-01-01
        • 1970-01-01
        • 2018-11-22
        相关资源
        最近更新 更多