gpt4 book ai didi

java - Android 上的密码生成器

转载 作者:行者123 更新时间:2023-11-30 00:51:27 26 4
gpt4 key购买 nike

我刚刚开始创建 android 应用程序,第一个想法就像“为 android 创建随 secret 码生成器只是为了练习”。

我做了,但它就像 this

这里是布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="ru.hashmap.myapplol.MainActivity">

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:text="Your password should be here"
android:ems="10"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="16dp"
android:id="@+id/editText"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:singleLine="true" />

<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/progressBar"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:indeterminate="true" />

<Button
android:text="generate!"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="62dp"
android:id="@+id/button"
android:layout_below="@+id/progressBar"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:onClick="genPass"/>

<SeekBar
style="@style/Widget.AppCompat.SeekBar.Discrete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="15"
android:progress="6"
android:layout_marginTop="27dp"
android:id="@+id/seekBar"
android:layout_below="@+id/progressBar"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>

代码在这里:

package ru.hashmap.myapplol;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.SeekBar;
import android.widget.TextView;

import java.util.Random;

public class MainActivity extends AppCompatActivity {

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void genPass(View view)
{
SeekBar seek = (SeekBar) findViewById(R.id.seekBar);
int seekValue = seek.getProgress()+1;
Log.d("seekValue", seekValue+"");
String[] dict = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
String[] pass = new String[seekValue];
Random rnd = new Random();
for(int i = 0; i < seekValue; i++) {
pass[i] = dict[rnd.nextInt(dict.toString().length())];
}
((TextView) findViewById(R.id.editText)).setText(pass.toString());
Log.d("pass", pass+"");
}
}

如何让它按预期工作?

最佳答案

根本没有问题,您只是在此处打印数组的引用地址 setText(pass.toString()) 看起来像 [Ljava.lang.String; @52e922

您需要一个 StringBufferStringBuilder 来附加字符并稍后将其显示为字符串。

        SeekBar seek = (SeekBar) findViewById(R.id.seekBar);
int seekValue = seek.getProgress()+1;
Log.d("seekValue", seekValue+"");
String[] dict = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
Random rnd = new Random();
StringBuilder str= new StringBuilder();
for(int k = 0; k < seekValue; k++) {
str.append(dict[rnd.nextInt(dict.length)]);
}
// don't use this , will display reference of array
//((TextView) findViewById(R.id.editText)).setText(pass.toString());

((TextView) findViewById(R.id.editText)).setText(str.toString());
// use this and avoid array in this case

dict.toString 再次给你引用地址,其长度不会类似于 [Ljava.lang.String;@52e922 意味着这个 dict.toString().length() 总是给出 26 左右的长度,因此您的密码将始终包含此限制附近的字符,因此要获得 dict 数组的实际长度,即 62,请使用 dict.length

关于java - Android 上的密码生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40957530/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com