【问题标题】:using Boolean variable with a loop使用带有循环的布尔变量
【发布时间】:2017-04-16 14:27:34
【问题描述】:

我有一个包含考试结果的二维数组。数组包含名称。用户输入一些名称,程序检查该名称是否等于存储在数组中的任何其他名称。如果它们匹配,它会打印出包含该名称的整行。如果没有这样的名称,它应该打印出一个“错误”。我需要使用一个布尔变量来检查是否找到了东西。但问题是我想不出如何检查是否在循环中找到了某些东西。当我使用这条线时:

boolean=namesmatch=namechk.equalsIgnoreCase(math[x][1]);

只有当用户输入名字时它才会正确,因为 x=0。如果用户输入任何其他名称,它会打印出所需的行,然后是“错误”。我应该怎么做才能摆脱这个“错误”?

public class Math extends StudentCharts {

public Math(){
math = new String [3][3];
math[0][0]="math";      math[0][1]="Bill Gates";    math[0][2]="49";   
math[1][0]=math[0][0];  math[1][1]="John Doe";      math[1][2]="12";   
math[2][0]=math[0][0];  math[2][1]="Paul Allen";    math[2][2]="31";  }

public void prnt (String namechk){
    int x=0;
    int y=0;
   boolean namesmatch=namechk.equalsIgnoreCase(math[x][1]);

    for (x=0; x<3; x++) {
       if (namechk.equalsIgnoreCase(math[x][1])) {
           for (y=0; y<3; y++) {
        System.out.print(math[x][y]+" ");
    } } }
            if (!namesmatch) {
        System.out.println("error");
   } } }

这是主类

public class Studentsarrays {
public static void main(String[] args) {

    Math chr1 = new Math();

    Scanner user = new Scanner(System.in);
    System.out.println("Enter full name, please");
    String namecheck = user.nextLine();
    chr1.prnt(namecheck); } }

【问题讨论】:

  • 那里的牙套是怎么回事? Java 不是口齿不清的。
  • boolean=namesmatch=namechk 是错字还是您的源代码中实际包含的内容?此外,"error" 并没有多大帮助。 什么错误你到底得到了什么?
  • 你知道你可以做到if( namesmatch ) { ...,对吧?
  • 另外,Math 是一个有点不方便的类名,因为docs.oracle.com/javase/7/docs/api/java/lang/Math.html
  • 另外,像prntnamechk 这样的变量名曾经是早期C 程序员喜欢的一种变态,但现在已经很不受欢迎了。

标签: java arrays loops boolean


【解决方案1】:

这应该可行。 声明布尔名称匹配 = 假。在内部 for 循环(y 循环)中,设置 namesmatch = true。只有在至少有一个匹配项时,namesmatch 才会设置为 true。

public class Math extends StudentCharts {

public Math(){
math = new String [3][3];
math[0][0]="math";      math[0][1]="Bill Gates";    math[0][2]="49";   
math[1][0]=math[0][0];  math[1][1]="John Doe";      math[1][2]="12";   
math[2][0]=math[0][0];  math[2][1]="Paul Allen";    math[2][2]="31";  }

public void prnt (String namechk){
    int x=0;
    int y=0;
   **boolean namesmatch=false;**

    for (x=0; x<3; x++) {
       **if (namechk.equalsIgnoreCase(math[x][1]))** {
           for (y=0; y<3; y++) {
        System.out.print(math[x][y]+" ");
        **namesmatch=true;**
    } } }
            if (!namesmatch) {
        System.out.println("error");
   } } }

【讨论】:

  • 您不能将标记添加到代码中。要强调您更改的行,请使用 cmets。
  • @Potato 很高兴它达到了目的。请善意接受答案:)
猜你喜欢
  • 1970-01-01
  • 2018-09-21
  • 2013-05-15
  • 2013-08-09
  • 2015-05-24
  • 1970-01-01
  • 2020-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多