第二题修改

master
psj 11 months ago
parent 77c895d553
commit 750ee041e6

3
.idea/.gitignore vendored

@ -1,3 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml

@ -2,8 +2,8 @@
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/jinzhi/jinzhi.iml" filepath="$PROJECT_DIR$/jinzhi/jinzhi.iml" />
<module fileurl="file://$PROJECT_DIR$/jisuan/jisuan.iml" filepath="$PROJECT_DIR$/jisuan/jisuan.iml" />
<module fileurl="file://$PROJECT_DIR$/jisuan/First_Jisuan.iml" filepath="$PROJECT_DIR$/jisuan/First_Jisuan.iml" />
<module fileurl="file://$PROJECT_DIR$/jinzhi/Second_Jinzhi.iml" filepath="$PROJECT_DIR$/jinzhi/Second_Jinzhi.iml" />
<module fileurl="file://$PROJECT_DIR$/test6298.iml" filepath="$PROJECT_DIR$/test6298.iml" />
</modules>
</component>

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AutoImportSettings">
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="240004e1-ef35-41dc-944d-01a893c69670" name="Changes" comment="">
<change afterPath="$PROJECT_DIR$/.idea/uiDesigner.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/jinzhi/src/jinzhi2.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/.gitignore" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/modules.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/modules.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/jinzhi/jinzhi.iml" beforeDir="false" afterPath="$PROJECT_DIR$/jinzhi/Second_Jinzhi.iml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/jinzhi/src/JinZhi.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/jisuan/jisuan.iml" beforeDir="false" afterPath="$PROJECT_DIR$/jisuan/First_Jisuan.iml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/out/production/jinzhi/JinZhi.class" beforeDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Class" />
</list>
</option>
</component>
<component name="Git.Settings">
<option name="RECENT_BRANCH_BY_REPOSITORY">
<map>
<entry key="$PROJECT_DIR$" value="main" />
</map>
</option>
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="ProjectColorInfo">{
&quot;associatedIndex&quot;: 5
}</component>
<component name="ProjectId" id="2nFBmc5uTbrylp6kD7GKdOhgrTY" />
<component name="ProjectViewState">
<option name="autoscrollFromSource" value="true" />
<option name="flattenPackages" value="true" />
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
"Application.JinZhi.executor": "Run",
"Application.jinzhi2.executor": "Run",
"Application.mm.executor": "Run",
"RunOnceActivity.ShowReadmeOnStart": "true",
"SHARE_PROJECT_CONFIGURATION_FILES": "true",
"git-widget-placeholder": "master",
"kotlin-language-version-configured": "true"
}
}]]></component>
<component name="RunManager" selected="Application.jinzhi2">
<configuration name="JinZhi" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="JinZhi" />
<module name="Second_Jinzhi" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="jinzhi2" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="jinzhi2" />
<module name="Second_Jinzhi" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<recent_temporary>
<list>
<item itemvalue="Application.jinzhi2" />
<item itemvalue="Application.JinZhi" />
</list>
</recent_temporary>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="240004e1-ef35-41dc-944d-01a893c69670" name="Changes" comment="" />
<created>1728559103908</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1728559103908</updated>
</task>
<servers />
</component>
</project>

@ -1,103 +0,0 @@
import java.util.Scanner;
public class JinZhi {
// 辅助方法:将任意进制的数转换为十进制
/**
*
*
* @param number
* @param base
* @return
*/
public static int toDecimal(String number, int base) {
int decimalValue = 0; // 十进制结果
int power = 0; // 当前位的权重(幂次)
// 从字符串的最后一个字符开始遍历
for (int i = number.length() - 1; i >= 0; i--) {
char digit = number.charAt(i); // 当前字符
int value = 0; // 当前字符对应的十进制值
// 根据字符计算其十进制值
if (Character.isDigit(digit)) {
value = digit - '0'; // 如果是数字,直接减去'0'的ASCII码
} else if (digit >= 'A' && digit <= 'F') {
value = digit - 'A' + 10; // 如果是大写字母,减去'A'的ASCII码后加10
} else if (digit >= 'a' && digit <= 'f') {
value = digit - 'a' + 10; // 如果是小写字母,减去'a'的ASCII码后加10
} else {
throw new IllegalArgumentException("输入的数字中包含无效字符: " + digit);
}
// 将当前字符的十进制值乘以权重后累加到结果中
decimalValue += value * Math.pow(base, power);
power++; // 权重增加
}
return decimalValue;
}
// 辅助方法:将十进制数转换为任意进制
/**
*
*
* @param decimalValue
* @param base
* @return
*/
public static String fromDecimal(int decimalValue, int base) {
if (decimalValue == 0) {
return "0"; // 如果十进制数为0直接返回"0"
}
StringBuilder result = new StringBuilder(); // 用于存储转换结果的StringBuilder对象
char[] digits = "0123456789ABCDEF".toCharArray(); // 表示所有可能的进制字符的数组
// 使用循环进行进制转换
while (decimalValue > 0) {
int remainder = decimalValue % base; // 取余数作为当前位的值
result.insert(0, digits[remainder]); // 将当前位的值添加到结果的开头
decimalValue /= base; // 十进制数除以目标进制,为下一次循环做准备
}
return result.toString(); // 返回转换后的结果字符串
}
// 主方法:执行进制转换
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // 创建Scanner对象用于读取用户输入
// 读取要转换的数、其原始进制和目标进制
System.out.print("请输入要转换的数: ");
String number = scanner.nextLine();
System.out.print("请输入该数的原始进制2-16: ");
int inputBase = scanner.nextInt();
// 读取目标进制
System.out.print("请输入目标进制2-16: ");
int targetBase = scanner.nextInt();
// 验证输入的有效性
if (inputBase < 2 || inputBase > 16 || targetBase < 2 || targetBase > 16) {
System.out.println("无效的进制。进制必须在2到16之间。");
return; // 如果输入无效,则直接返回,不执行后续操作
}
try {
// 将输入的数转换为十进制数
int decimalValue = toDecimal(number, inputBase);
// 将十进制数转换为目标进制数
String result = fromDecimal(decimalValue, targetBase);
// 输出转换后的结果
System.out.println(number + "初始是" + inputBase + "进制;" + "在" + targetBase + "进制下是"+ result);
} catch (IllegalArgumentException e) {
// 捕获并处理非法参数异常
System.out.println("错误: " + e.getMessage());
}
scanner.close(); // 关闭Scanner对象释放资源
}
}

@ -0,0 +1,209 @@
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Locale;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
//进制转换工具
@SuppressWarnings("serial")
public class jinzhi2 extends JFrame {
public jinzhi2() {
}
public void init() {
setContenpane();
actionListen();
mainFrame();
}
//图形化界面函数
public void mainFrame() {
//设置窗口的参数
setBounds(500,50,530,500);
//禁用重新调整窗口大小的功能
setResizable(false);
//关闭窗口的右上角的叉的同时关闭程序
setDefaultCloseOperation(EXIT_ON_CLOSE);
//设置窗口上当前程序的名字
setTitle("第二题进制转换");
//清除默认的布局管理器
getContentPane().setLayout(null);
//设置窗口显示
setVisible(true);
}
//控件
JTextField jt1, jt2, jt3, answer_text;
JLabel jl1, jl2, jl3, answer, help, tips;
JButton button;
//控件集合,方便修改字体等
ArrayList<JComponent> list_conponent = new ArrayList<>();
//放置控件
public void setContenpane() {
//文本输入框
jt1 = new JTextField();
jt2 = new JTextField();
jt3 = new JTextField();
answer_text = new JTextField();
jt1.setBounds(120, 30, 120, 40);
jt2.setBounds(120, 100, 120, 40);
jt3.setBounds(120, 170, 120, 40);
answer_text.setBounds(300, 170, 200, 40);
list_conponent.add(jt1);
list_conponent.add(jt2);
list_conponent.add(jt3);
list_conponent.add(answer_text);
getContentPane().add(jt1);
getContentPane().add(jt2);
getContentPane().add(jt3);
getContentPane().add(answer_text);
//标签
jl1 = new JLabel("输入数据:");
jl2 = new JLabel("输入进制:");
jl3 = new JLabel("转换进制:");
answer = new JLabel("转换结果:");
help = new JLabel("若结果不显示则表示数据过大无法显示!");
tips = new JLabel("本程序提供 1-36 进制互转数据支持int(过大无效)");
jl1.setBounds(20, 30, 100, 40);
jl2.setBounds(20, 100, 100, 40);
jl3.setBounds(20, 170, 100, 40);
answer.setBounds(300, 120, 200, 60);
help.setBounds(280, 30, 220, 30);
tips.setBounds(20, 240, 350, 30);
list_conponent.add(jl1);
list_conponent.add(jl2);
list_conponent.add(jl3);
list_conponent.add(answer);
//help不存入集合
//tips不存入集合
getContentPane().add(jl1);
getContentPane().add(jl2);
getContentPane().add(jl3);
getContentPane().add(answer);
getContentPane().add(help);
getContentPane().add(tips);
//按钮
button = new JButton("转换");
button.setBounds(300, 70, 80, 35);
list_conponent.add(button);
getContentPane().add(button);
//字体
for(JComponent jc:list_conponent) {
jc.setFont(new Font("黑体",Font.BOLD,20));
}
}
//事件监听函数
public void actionListen() {
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//获取左边三个文本输入框内容
String a = jt1.getText();
int b = Integer.parseInt(jt2.getText());
int c = Integer.parseInt(jt3.getText());
//判断文本输入框内容是否合法(第一个)
char[] chars = a.toCharArray();
int len = chars.length;
for (int i = 0; i < len; i++) {
if(chars[i] < 48 || chars[i] > 57){
if(chars[i] < 65 || chars[i] > 90){
//首个位置可以是符号位,但是只能是 '-' '+'
if(i == 0){
if(chars[0] != '-' && chars[0] != '+'){
answer.setText("输入数据有误");
answer_text.setText("NULL");
return;
}
}else {
answer.setText("输入数据有误");
answer_text.setText("NULL");
return;
}
}
}
}
//需要判断一下所给类型是否合法,判断输入数据中的最大字符。
//第二个文本输入框与第三个文本输入框的进制是否合法
int maxChar = 1;
for (char t : chars) {
//ASCII转换,本来分别是 -48 -55,但是因为是进制类型故需要加一
//(例:最大字符为 '0' 时,最小为 '1' 进制;
// 最大字符为 '9' 时,最小为 '10' 进制;
// 最大字符为 'F' 时,最小为 '16'进制)
if(t < 57){
maxChar = Math.max(maxChar, t - 47);
}else{
maxChar = Math.max(maxChar, t - 54);
}
}
if(b < 1 || b > 36 || maxChar > b || c < 1 || c >36) {
answer.setText("输入进制有误");
answer_text.setText("NULL");
return;
}
//转换结果
int model_num;
String sum;
if(b != c){
//将其他进制数据转换为10进制
model_num = Integer.parseInt(a, b);
//将10进制数据转换为其他进制 转换为大写字母
sum = Integer.toString(model_num, c).toUpperCase(Locale.ROOT);
answer.setText("转换结果:");
answer_text.setText(sum);
return;
}else{
//原进制与所需进制相同无需转换
answer.setText("转换结果:");
answer_text.setText(a);
return;
}
}
});
}
//主函数
public static void main(String[] args) {
new jinzhi2().init();
}
}

Binary file not shown.

Binary file not shown.
Loading…
Cancel
Save