2017-05-07 5 views
-1

ログインプログラムを作成していますが、エラーが発生しています。リストにない名前を入力すると、エラーが発生します。それはelseの声明にも届かないようですが、私はなぜそれがわかりません。それはあなたのためにi値を管理しますようJavaでログインを作成すると、else文に移動しませんか?

import java.lang.*; 
import java.util.*; 
import java.io.*; 
import java.math.*; 
public class HelloWorld { 
    public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 

    String userName; 
    int n = 10; 
    int i = 0; 

    String[] array = new String[n]; 
    array[0] = "John"; 
    array[1] = "Johny"; 
    array[2] = "ben"; 


    System.out.println("Enter your user name(Note:**Case Sensative**)"); 
    userName = input.nextLine(); 

    while (i <= array.length) { 
     if (array[i].equals(userName)) { 
     System.out.println("Your UserName is valid"); 
     break; 
     } 
     else if (!array[i].equals(userName)){ 
     i++; 
     } 
     else { 
      System.out.println("Your UserName is not valid"); 
      break; 
     } 
    } 
    } 
} 
+0

不要なインポートがたくさんあり、必要なのは 'java.util.Scanner'だけです。他のものは削除できます。:) – CodingNinja

答えて

2

まず、私はfor-loopを使用して検討したいが、また、どのように、これまでに取得することが可能であるあなたが

if element.equals(userName) {...} 
else if !element.equals(userName) {...} 
else {...} 

を持つロジックを考えますelseブロックのいずれかである場合、elementuserNameと等しくなりますが、それ以外の状態はありません。あなたはおそらくないので、私は

//... 
userName = input.nextLine(); 

String validUser = null; 
for (int index = 0; index < array.length; index++) { 
    if (array[i].equals(userName)) { 
     validUser = userName; 
     break; 
    } 
} 
if (validUser != null) { 
    System.out.println("UserName is valid"); 
} else { 
    System.out.println("Your UserName is not valid"); 
} 

...ユーザーが見つかったかどうかを示すフラグを持つかどうかと、一般的な概念として、ループ

のもう一方の端にあることを確認し検討したいですインデックスについてもっと気をつけてください...

for (String element : array) { 
    if (array[i].equals(userName)) { 
     validUser = userName; 
     break; 
    } 
} 

簡略版です。はJavaがあなたのコンテキストで実行される唯一の状態であり、その後実行されている他の条件が存在しない場合

は、他場合の詳細についてThe for statementを見て、すべての

+0

ありがとう、私はforループを使用しようとしていたが、私はそれの中で立ち往生し続けた。 – Vezro

+0

私はなぜこの答えがdownvoteを引き付けるのだろうか?もう人を助けるつもりはないのですか? – MadProgrammer

0

ファーストを持っています。それはあなたがTRUEとFALSEをして、別の状態を期待しているようなものです。 foreachをJavaでもっと簡単に利用できるようにする。あなたが習得し、使用を取得すると

boolean found = false; 
for(String name: array){ 
    if (name.equals(userName)) { 
     found = true; 
     break; 
    } 
} 

if(!found){ 
    System.out.println("Your UserName is not valid"); 
}else{ 
    System.out.println("Your UserName is valid"); 
} 

少しのための配列、コレクションや特別ラムダストリームAPIのメソッドは、Javaの知識を持ち上げます。

+0

これはどのように動作するのか理解していますが、実際には同じエラーが表示されています。 – Vezro

+0

私はあなたの側に来ているエラーが何かを知りたい。 – privatejava

0

入力(userName)は、array[i]のいずれかになりますので、お客様のステートメントはelse部分には決して行きません。それが不可能なシナリオであるので、あなたのelseに到達できない理由がある

if (array[i].equals(userName)) { //It will do this if userName is array[i] 
    System.out.println("Your UserName is valid"); 
    break; 
} 
else if (!array[i].equals(userName)) { //It will do this if userName is NOT array[i] 
    i++; 
} 

else { //this is impossible, unreachable code 
    System.out.println("Your UserName is not valid"); 
    break; 
} 

...それについて考えてみよう。私はあなたのプログラムを編集しました。ここで全部だ:

import java.util.Scanner; 

public class Experiments { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     String userName; 
     boolean found = false; 

     String[] array = new String[3]; 
     array[0] = "John"; 
     array[1] = "Johny"; 
     array[2] = "ben"; 


     System.out.println("Enter your user name:"); 
     userName = input.nextLine(); 

     for(int i=0; i<array.length; i++) { 
      if (userName.equalsIgnoreCase(array[i])) { 
       System.out.println("Your UserName is valid"); 
       found = true; 
       break; 
      } 
      if (!found && i == array.length-1) { 
       System.out.println("Your UserName is not valid"); 
      } 
     } 
     input.close(); 
    } 
} 

入力(ユーザー名)が任意の場所でのアレイ内にある場合、それは、配列内にない場合、それは"Your UserName is not valid"を言うだろう"Your UserName is valid"を言うだろう。ここで

は、有効なユーザー名の例です。

Enter your user name: 
John 
Your UserName is valid 

とユーザー名が無効の場合:あなたはこのことについて質問があれば

Enter your user name: 
Jimmy 
Your UserName is not valid 

はコメントしてください、と私は説明します。

+0

これは、forループが何をしているに関わらず、 "あなたのユーザー名が有効ではない"とは言いませんか? – Vezro

+0

@Vezro - いいえ、入力( 'userName')が任意の場所の配列にある場合、' 'あなたのUserNameは有効です' 'と表示されます。" – CodingNinja

+0

@Vezroはこの回答を受け入れますか?私が改善できるもの、またはあなたが抱えている困難を教えてください。どうもありがとうございました! – CodingNinja

関連する問題