2017-10-04 5 views
0

I`ve 코드응용 프로그램은

public class MainActivity extends AppCompatActivity { 

EditText editText; 
TextView t1, t2; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    editText = (EditText) findViewById(R.id.editText); 
    t2 = (TextView) findViewById(R.id.textView4); 
    t1 = (TextView) findViewById(R.id.textView3); 
    Button button = (Button) findViewById(R.id.button2); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String number = editText.getText().toString(); 
      int user = Integer.parseInt(number); 
      int computer = random(); 
      int lose = random(); 
      int dif1 = wartoscbez(lose-user); 
      int dif2 = wartoscbez(lose-computer); 
      if(dif1>dif2) 
      { 
       t1.setText(computer); 
       t2.setText("YOU WON"); 
      } 
      if (dif2>dif1) 
      { 
       t1.setText(computer); 
       t2.setText("YOU LOSE"); 
      } 
      if(dif1==dif2) 
      { 
       t1.setText(computer); 
       t2.setText("YOU WON"); 
      } 
     } 
    }); 


} 

public int random() 
{ 
    int max = 1; 
    int min = 50; 
    Random r = new Random(); 
    int aNumber = r.nextInt(max - min + 1) + min; 
    return aNumber; 
} 
public int wartoscbez(int a) 
{ 
    if (a>=0) 
    { 
     return a; 
    } 
    else 
    { 
    int x = 0 - a; 
     return x; 
    } 
} 

}

응용 컴파일을 다음과 같이 응용 프로그램을 만든 안드로이드 Studio에서 에뮬레이터에서 정지 유지하지만 에뮬레이터에서 응용 프로그램 불행하게도 닫히고 . logCat에는 다음과 같은 것이 있습니다.

10-04 17 : 36 : 56.946 3717-3717 /? I/art : 늦지 않게 -Xcheck : jni (이미 켜짐) 10-04 17 : 36 : 56.947 3717-3717 /? W/art : 기본값을 사용하는 X86의 예상치 못한 CPU 변형 : x86 10-04 17 : 36 : 57.168 3717-3717/com.holland.porazpierwszy W/System : 알 수없는 경로로 참조 된 ClassLoader : /data/app/com.holland.porazpierwszy -1/lib/x86 10-04 17 : 36 : 57.190 3717-3717/com.holland.porazpierwszy I/InstantRun : 인스턴트 런 서버 시작 : 주 프로세스 10-04 17 : 36 : 57.328 3717-3717/com .holland.porazpierwszy 승/예술 : 안드로이드 4.1 이전에, 메소드 android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter (android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff $ 모드)가 android.graphics.drawable.Drawable의 package-private 메소드를 잘못 재정의했습니다. 10-04 17 : 36 : 57.625 3717-3749/com.holland.porazpierwszy I/OpenGLRenderer : 초기화 된 EGL, 버전 1.4 10-04 17 : 36 : 57.627 3717-3749/com.holland.porazpierwszy D/OpenGLRenderer : 스왑 동작 1 10-04 17 : 36 : 57.627 3717-3749/com.holland.porazpierwszy W/OpenGLRenderer : EGL_SWAP_BEHAVIOR_PRESERVED를 사용하여 구성을 선택하지 못했습니다. ... 10-04 17 : 36 : 57.628 3717-3749/com.holland.porazpierwszy D/OpenGLRenderer : 스왑 동작 0 10-04 17 : 36 : 57.751 3717-3717/com.holland.porazpierwszy W/art : 안드로이드 4.1 이전에, 메소드 int android.support.v7.widget.ListViewCompat.lookForSelectablePosition (int, boolean)은 android.widget.ListView의 package-private 메소드를 잘못 재정의했습니다. 10-04 17 : 37 : 16.351 3717-3717/com.holland.porazpierwszy D/AndroidRuntime : VM 종료 10-04 17 : 37 : 16.352 3717-3717/com.holland.porazpierwszy E/AndroidRuntime : 치명적인 예외 : 주 프로세스 : com.holland.po PID : 3717 java.lang.IllegalArgumentException : n은 양수 여야합니다. com.holland.porazpierwszy.MainActivity.random (MainActivity.java:60)의 (java.util.Random.java:391) 에 있습니다. at com.holland.porazpierwszy.MainActivity $ 1.onClick (MainActivity.java30) at android.view.View.performClick (View.java:5637) android.view.View $ PerformClick.run (View.java) : 22,429) android.os.Handler.handleCallback (Handler.java:751에서 ) android.os.Looper.loop에서 android.os.Handler.dispatchMessage (Handler.java:95) 에서 (Looper.java:154) android.app.ActivityThread.main (ActivityThread.java:6119) at java.lang.reflect.Method.invoke (기본 메소드) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java : com.android.internal.os.ZygoteInit.main (ZygoteInit.java:776에서 886) 는)

당신은 그것을 해결하는 방법을 알고 계십니까?

답변

0

스택 추적의 중요한 부분은 다음과 같습니다

public int random() 
{ 
    int max = 1; 
    int min = 50; 
    Random r = new Random(); 
    int aNumber = r.nextInt(max - min + 1) + min; 
    return aNumber; 
} 

max - min + 1가 음수로 평가해야한다는 의미

java.lang.IllegalArgumentException: n must be positive 
     at java.util.Random.nextInt(Random.java:391) 
     at com.holland.porazpierwszy.MainActivity.random(MainActivity.java:60) 

여기에 코드입니다. 이는 아마도 minmax 값을 바꾼 것으로 보입니다. 당신은 min = 50max = 1입니다.

min = 1max = 50을 사용하도록 변경하고 모두 설정해야합니다.

+0

나는이 swiched, 그러나 이것은 여전히 ​​갑자기 –

+0

치명적인 예외 종료 : 주요 프로세스 : com.holland.porazpierwszy, PID : 3717 java.lang.IllegalArgumentException가를 : N (java.util.Random.nextInt에 양수 여야합니다 Random.java:391) –